2012-02-01 4 views
0

JPG 파일은 업로드 할 수 있지만 PNG 파일은 업로드 할 수 없습니다.
PNG 이미지는 저장되지 않습니다,하지만 ‰PNG À À°£ûïS JÄž Ÿ¬™Ù<íû;업로드 된 PNG 파일을 저장할 수 없습니다.

내 코드으로 출력한다 이런 식입니다 : 내가 잘못 뭐하는 거지

$source_gd_image = imagecreatefrompng($sourcefile); // <-- If PNG file 
    $target_gd_image = imagecreatetruecolor($target_image_width, $target_image_height); 

    if($source_image_type == IMAGETYPE_PNG) { 
    imagealphablending($target_gd_image, true); // Should this be false? 
    imagesavealpha($target_gd_image, true); 
    imagepng($target_gd_image); // <-- This is where the gibberish is outputed 
    } 

    if($source_image_type == IMAGETYPE_JPEG) { 
    imagecopyresampled($target_gd_image, $source_gd_image, 0, 0, 0, 0, $target_image_width, $target_image_height, $source_image_width, $source_image_height); 
    imagejpeg($target_gd_image, $target_file, $quality); 
    } 

    imagedestroy($source_gd_image); 
    imagedestroy($target_gd_image); 

?

+1

시도 추가 헤더'('영상/PNG 콘텐츠 유형')의 $ TARGET_FILE 가정

수단을 사용하여 원하는 출력 파일의 이름이다. – bfavaretto

답변

4

imagejpeg과 마찬가지로 파일에 저장하려면 a file name as the second parameter을 지정해야합니다. 그렇지 않으면 브라우저에 출력됩니다. '출력 전에;

imagepng($target_gd_image, $target_file); 
+0

아! 나는 항상 DOC'bool imagepng (resource $ image [, string $ filename [, int $ quality [, int $ filters]])')를 이해하지 못한다. 그러나 이제는 이렇게 말했고'$ target_file'. – Steven

+1

@Steven : 사실 대괄호는 선택 요소를 나타냅니다. $ 품질을 넣고 싶다면 $ filename에 뭔가를 넣어야합니다. 이 표기법은 언어 문서에서 흔히 볼 수 있으므로 알아두면 유용합니다. 또한 PNG는 무손실이기 때문에 "품질"은 실제로 잘못된 이름입니다. 압축 수준을 설정하지만 실제 이미지 데이터가 아닌 파일 크기에만 영향을줍니다. –

+0

배경이 여전히 검정입니다. 나는'imagealphablending'을 true와 false로 설정하려고했지만 동일한 결과를 얻습니다. – Steven

관련 문제