PNG의 크기를 조정하고 서버에 8bit png (<input type='file' />
)로 저장하는 스크립트를 작성하려고하는데 몇 가지 문제가 있습니다.imagecreatefrompng PHP GD 라이브러리를 사용하는 24 비트 png에서 실패합니다.
$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를 업로드 할 때이 위대한 작품을, 그리고 난 이미 8 비트 PNG를 업로드 할 때, 그것은 투명성을 유지하고 예상대로 크기를 조정합니다,하지만 난 24 비트 PNG로 I를 업로드 할 선택할 때 나는 imagecreatefrompng
이 실패했기 때문에 두 번째 오류는 이해하지만, 나는 그것이 유효한 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
를 얻을!
도움이 될 것입니다.
와우, 나는 이것이 사실이 아니길 바란다 !! 이제 몇 가지 테스트를하고 가이드가있는 경우와없는 경우에 서로 다른 비트 심도로 몇 개의 PNG를 저장합니다. 그렇다면 어쨌든 주위에 있습니까? – rorypicko
ImageMagick에서 처리 할 수 있습니다. 당신은 한 파일에있는 모든 파일을 변환하거나 GD 대신에 그것을 사용할 수 있습니다 –
흠, 그냥 시도해 봤는데 모두 잘 업로드되었습니다. 어쩌면 전에 업로드하려고하는 PNG가 다른 방식으로 손상되었습니다 ... 지금 ImageMagick을 사용해 보겠습니다. 제안에 감사드립니다. 이 답변을 표시하고 ImageMagick이 올바른지 확인한 다음 문제가 PNG로 손상된 것처럼 보이는대로 답변을 수락합니다. 감사합니다 Andy – rorypicko