0

我正在尝试构建一个脚本,该脚本将调整 png 的大小并将其作为 8 位 png 保存到服务器,<input type='file' />但我遇到了一些问题。

$srcimage = imagecreatefrompng($orig_source);
$img = imagecreatetruecolor($resize_width, $resize_height);
$bga = imagecolorallocatealpha($img, 0, 0, 0, 127);
imagecolortransparent($img, $bga);
imagefill($img, 0, 0, $bga);
imagecopy($img, $srcimage, 0, 0, 0, 0, $resize_width, $resize_height);
imagetruecolortopalette($img, false, 255);
imagesavealpha($img, true);
imagepng($img, $filepath);
imagedestroy($img);

如何使用 PHP GD 库将 PNG 转换为 8 位 PNG

这在我上传 32 位 png 时效果很好,当我上传已经 8 位 png 时,它会保持透明度并按预期调整大小,但是当我选择上传 24 位 png 时出现此错误

Warning: imagecreatefrompng() [function.imagecreatefrompng]: '/share/MD0_DATA/Qweb/php2zRiNv' is not a valid PNG file

Warning: imagecopy() expects parameter 2 to be resource, boolean given

我知道第二个错误是因为imagecreatefrompng失败,但我不明白为什么会失败,因为它是一个有效的 png 文件!

任何帮助将不胜感激!

4

1 回答 1

1

如果您从 Photoshop 等应用程序保存它,请确保使用“保存为 Web”选项,因为某些应用程序嵌入了非标准数据,例如指南。

于 2013-07-23T13:55:54.100 回答