1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-29 10:12:41 +01:00

When {meme ...} embed has no text, just use the raw file data unmodified

Summary:
Ref T13216. See PHI948. When you use the remarkup hint button to embed a meme with no text, you get `{meme src=X}`.

If the source is a GIF, we currently split the source apart into frame-by-frame images, process them, and stitch them back together. The end result is the same image we started with, but this process can be slow/expensive, and may timeout for sufficiently large GIFs.

Instead: when there's no text, just return the original image data.

Test Plan:
  - Used `{meme src=X}` with no text, got an image faster.
  - Used `{meme src=X, above=...}` to add text, got an attempt to add text (which didn't get very far locally since I don't have GD configured).

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13216

Differential Revision: https://secure.phabricator.com/D19777
This commit is contained in:
epriestley 2018-11-06 09:07:30 -08:00
parent bbfc860c63
commit c206b066df

View file

@ -174,6 +174,15 @@ final class PhabricatorMemeEngine extends Phobject {
private function newAssetData(PhabricatorFile $template) { private function newAssetData(PhabricatorFile $template) {
$template_data = $template->loadFileData(); $template_data = $template->loadFileData();
// When we aren't adding text, just return the data unmodified. This saves
// us from doing expensive stitching when we aren't actually making any
// changes to the image.
$above_text = $this->getAboveText();
$below_text = $this->getBelowText();
if (!strlen(trim($above_text)) && !strlen(trim($below_text))) {
return $template_data;
}
$result = $this->newImagemagickAsset($template, $template_data); $result = $this->newImagemagickAsset($template, $template_data);
if ($result) { if ($result) {
return $result; return $result;