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

2 番目のエラーが失敗したためであるimagecreatefrompngことは理解していますが、有効な png ファイルであるため、失敗する理由がわかりません。

どんな助けでも大歓迎です!

4

1 に答える 1

1

Photoshop などのアプリケーションから保存する場合は、一部のアプリケーションではガイドなどの非標準データが埋め込まれているため、必ず Web 用に保存するオプションを使用してください。

于 2013-07-23T13:55:54.100 に答える