我正在尝试构建一个脚本,该脚本将调整 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 文件!
任何帮助将不胜感激!