2013-07-23 4 views
0

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 

를 얻을!

도움이 될 것입니다.

답변

1

Photoshop과 같은 응용 프로그램에서 저장하는 경우 일부 응용 프로그램이 가이드와 같은 비표준 데이터를 포함하므로 웹 저장 옵션을 사용해야합니다.

+0

와우, 나는 이것이 사실이 아니길 바란다 !! 이제 몇 가지 테스트를하고 가이드가있는 경우와없는 경우에 서로 다른 비트 심도로 몇 개의 PNG를 저장합니다. 그렇다면 어쨌든 주위에 있습니까? – rorypicko

+0

ImageMagick에서 처리 할 수 ​​있습니다. 당신은 한 파일에있는 모든 파일을 변환하거나 GD 대신에 그것을 사용할 수 있습니다 –

+0

흠, 그냥 시도해 봤는데 모두 잘 업로드되었습니다. 어쩌면 전에 업로드하려고하는 PNG가 다른 방식으로 손상되었습니다 ... 지금 ImageMagick을 사용해 보겠습니다. 제안에 감사드립니다. 이 답변을 표시하고 ImageMagick이 올바른지 확인한 다음 문제가 PNG로 손상된 것처럼 보이는대로 답변을 수락합니다. 감사합니다 Andy – rorypicko