2012-03-23 2 views
1

나는이 문제를 해결하기 위해 지난 밤을 보냈습니다.PHP Imagepng 출력이 브라우저에 표시되지 않습니다.

관련 헤더가 포함 된 PNG 이미지를 반환하는 php 파일이 있습니다. 관련 파일 내용은 기본적으로 있습니다. 따라서이를 표시 할 수 없습니다 이미지와 오류가 같은 (아니 이전의 출력 또는 공백 헤더 문 전)

header('Content-Type: image/png'); 

$img = @imagecreatefrompng($path); 

imagepng($img); 
imagedestroy($img); 

그러나 브라우저 (파이어 폭스) STH를 말한다.

파일을 다른 위치에 저장하고 FTP로 다운로드하면 표시됩니다. 마찬가지로 : 나는 헤더 문을 제거하고 파일 내용을 인쇄 출력 할 경우

imagepng($img, "/tmp/hedede.png"); 

은 다른 모든 쓰레기 데이터와 PNG 헤더를 보여줍니다. 이 페이지를 브라우저에 PNG 파일로 저장하면 브라우저는 저장된 PNG 파일을 다시 표시하지 않지만 Irfanview는이를 보여줍니다.

+1

imagecreatefrompng에서 "@"을 제거하면 누락 된 오류가있을 수 있습니다. – slash197

+0

예, 다음과 같은 알림이 표시 될 수 있습니다. 'abc'은 (는) 올바른 PNG 파일이 아닙니다. – hungneox

+0

"@"문자가 삭제되었습니다. 하지만 여전히 'error_reporting'이'(E_ALL)'로 설정되어 있어도 오류가 발생하지 않았습니다. 또한 입력 파일이 유효한 PNG이고 브라우저를 사용하여 해당 파일을 직접 호출하면 표시 할 수 있다고 확신합니다. – noway

답변

0

파일을 경로 (경로)에서 확인하십시오. 확장명으로 파일 형식을 신뢰하지 마십시오. 희망이 도움이됩니다. 파일이 png 이미지가 아니면 코드가 제대로 실행되지 않고 지정된 이미지가 표시되지 않습니다.

+0

입력 파일이 유효한 PNG이고 브라우저를 사용하여 해당 파일을 직접 호출하면 표시 할 수 있다고 확신합니다. – noway

+0

haizz, 당신은 mime 형식을 확인하지 않으면 유효한 png인지 아닌지 알 수 없습니다. abc.gif 파일을 abc.png로 변경하고 브라우저에서 볼 수 있습니다. – hungneox

+0

감사합니다. 그러나 헤더 매개 변수없이 파일 내용을 출력하면'‰ PNG'로 시작하는 파일 내용을 볼 수 있습니다. 그래서 PNG 파일이라고 가정합니다. 내가 올바른 방법으로하지 않는다면 mime 형식을 확인하는 방법을 알려주십시오. – noway

-1

이것은 GD 라이브러리 버전 문제입니다.

imagepng($resource) 

... 작업 이전 버전 GD Libray. 새 버전 :

imagepng($resource,"php://output") 
+0

Wut? 이거 어디서 났니? – deceze

관련 문제