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
2 番目のエラーが失敗したためであるimagecreatefrompng
ことは理解していますが、有効な png ファイルであるため、失敗する理由がわかりません。
どんな助けでも大歓迎です!