PHP imagecopyresampled OS是否依赖?

时间:2018-10-27 20:16:20

标签: php

我的PHP代码在Windows和Ubuntu 12上可以正常运行。但是,当我将其上传到Ubuntu 16时,调整大小后的图像会有奇怪的水平线。

Good image

Bad image

这不是PHP版本,我尝试了从5.6到7.2的所有版本。

这不是php.ini,我试图复制php.ini并重新启动Apache。

它不是Apache,我将图像保存在服务器上并通过FTP下载。

$big = imagecreatefromjpeg('big.jpg');
$small = imagecreatetruecolor(119, 180);
imagecopyresampled($small, $big, 0, 0, 0, 0, 119, 180, 785, 1181);
imagejpeg($small, 'small.jpg', 100);

1 个答案:

答案 0 :(得分:0)

我重新编写了代码,现在它可以在没有背景噪音的情况下在任何地方使用。我扩展了画布,以便按缩略图尺寸除以整数。我可以这样做,因为背景始终是白色的。

$extended_width = ceil($original_width / $thumbnail_width) * $thumbnail_width;
$extended_height = ceil($original_height / $thumbnail_height) * $thumbnail_height;
$extended_image = imagecreatetruecolor($extended_width, $extended_height);
$white = imagecolorallocate($extended_image, 255, 255, 255);
imagefill($extended_image, 0, 0, $white);
imagecopy($extended_image, $original_image, ($extended_width - $original_width) / 2, ($extended_height - $original_height) / 2, 0, 0, $original_width, $original_height);