我正在尝试构建一个脚本,该脚本将调整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);
How to convert PNG to 8-bit PNG using PHP GD library
当我上传一个32位的png时这很好用,当我上传一个已经8bit的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文件!
非常感谢任何帮助!
答案 0 :(得分:1)
如果您要从Photoshop等应用程序保存它,请确保使用“存储为Web”选项,因为某些应用程序会嵌入非标准数据(如指南)。