使用PHP GD中的`imagecopyresampled`调整图像大小

时间:2013-10-14 16:01:00

标签: php php-gd

使用PHP GD库,我生成不透明白色的图像资源,这里和那里有一些“洞”,它们是完全透明的磁盘形状。我已经附上了它,虽然您需要首先保存并使用Image Preview应用程序打开它(在Windows中),以便在蓝色背景下查看其中的孔。否则你只会看到白色。

原始图片: original image resource

从该图像资源(2550 x 3000px)开始,我需要创建一个较小的版本。我是使用imagecopyresampled()这样做的。对于生成的图像,一切都很好,但有一个例外:此处和那里,它包含灰色像素(RGB:254,254,254):

已调整大小的图片: resized image

我使用的部分代码如下:

$previewPxWidth = $this->viewportWidth_;
$previewPxHeight = round($this->viewportWidth_ / $schematic['paper.aspect.ratio']);

$preview = imagecreatetruecolor($previewPxWidth, $previewPxHeight);
$noColor = imagecolorallocatealpha($preview, 255, 255, 255, 127);
imagesavealpha($preview,true);
imagefill($preview, 0, 0, $noColor);

imagecopyresampled($preview, $sheet, 0, 0, 0, 0, $previewPxWidth, $previewPxHeight, $sheetPxWidth, $sheetPxHeight);
imagedestroy($sheet);

header("Content-type: image/png");
header("Content-disposition: inline; filename=image.png");
imagepng($preview);

哪些非常轻且(显然)随机定位的灰色像素来自何处?如何摆脱它们?

1 个答案:

答案 0 :(得分:0)

尝试使用imageAlphaBlending(),但ImageMagic是最佳方式。