diff --git a/src/applications/files/PhabricatorImageTransformer.php b/src/applications/files/PhabricatorImageTransformer.php index 173b92b6c9..0b08c78285 100644 --- a/src/applications/files/PhabricatorImageTransformer.php +++ b/src/applications/files/PhabricatorImageTransformer.php @@ -116,7 +116,7 @@ final class PhabricatorImageTransformer { return $dst; } - private function generatePreview(PhabricatorFile $file, $size) { + public static function getPreviewDimensions(PhabricatorFile $file, $size) { $data = $file->loadFileData(); $src = imagecreatefromstring($data); @@ -128,13 +128,35 @@ final class PhabricatorImageTransformer { $dx = max($size / 4, $scale * $x); $dy = max($size / 4, $scale * $y); + $sdx = $scale * $x; + $sdy = $scale * $y; + + return array( + 'x' => $x, + 'y' => $y, + 'dx' => $dx, + 'dy' => $dy, + 'sdx' => $sdx, + 'sdy' => $sdy + ); + } + + private function generatePreview(PhabricatorFile $file, $size) { + $data = $file->loadFileData(); + $src = imagecreatefromstring($data); + + $dimensions = self::getPreviewDimensions($file, $size); + $x = $dimensions['x']; + $y = $dimensions['y']; + $dx = $dimensions['dx']; + $dy = $dimensions['dy']; + $sdx = $dimensions['sdx']; + $sdy = $dimensions['sdy']; + $dst = imagecreatetruecolor($dx, $dy); imagesavealpha($dst, true); imagefill($dst, 0, 0, imagecolorallocatealpha($dst, 255, 255, 255, 127)); - $sdx = $scale * $x; - $sdy = $scale * $y; - imagecopyresampled( $dst, $src, diff --git a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleEmbedFile.php b/src/infrastructure/markup/rule/PhabricatorRemarkupRuleEmbedFile.php index 4aa8938618..31ec888b21 100644 --- a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleEmbedFile.php +++ b/src/infrastructure/markup/rule/PhabricatorRemarkupRuleEmbedFile.php @@ -68,7 +68,10 @@ final class PhabricatorRemarkupRuleEmbedFile case 'thumb': default: $attrs['src'] = $file->getPreview220URI(); - $attrs['width'] = '220'; + $dimensions = + PhabricatorImageTransformer::getPreviewDimensions($file, 220); + $attrs['width'] = $dimensions['sdx']; + $attrs['height'] = $dimensions['sdy']; $options['image_class'] = 'phabricator-remarkup-embed-image'; break; }