From c146c942af616a96b04210b6b3f07eca2e3e6363 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 18 Nov 2013 15:16:58 -0800 Subject: [PATCH] Fix meme generation for palette PNGs Summary: Fixes T4125. Indexed / palette PNGs may fail to allocate a proper black for drawing an image border. Test Plan: {F83066} Reviewers: btrahan, asukhachev Reviewed By: asukhachev CC: aran Maniphest Tasks: T4125 Differential Revision: https://secure.phabricator.com/D7604 --- src/applications/files/PhabricatorImageTransformer.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/applications/files/PhabricatorImageTransformer.php b/src/applications/files/PhabricatorImageTransformer.php index 8f03aeaa97..560d68f7fe 100644 --- a/src/applications/files/PhabricatorImageTransformer.php +++ b/src/applications/files/PhabricatorImageTransformer.php @@ -294,6 +294,15 @@ final class PhabricatorImageTransformer { $lower_text, $mime_type) { $img = imagecreatefromstring($data); + + // Some PNGs have color palettes, and allocating the dark border color + // fails and gives us whatever's first in the color table. Copy the image + // to a fresh truecolor canvas before working with it. + + $truecolor = imagecreatetruecolor(imagesx($img), imagesy($img)); + imagecopy($truecolor, $img, 0, 0, 0, 0, imagesx($img), imagesy($img)); + $img = $truecolor; + $phabricator_root = dirname(phutil_get_library_root('phabricator')); $font_root = $phabricator_root.'/resources/font/'; $font_path = $font_root.'tuffy.ttf';