2012-03-23 2 views
1

Я провела свою последнюю ночь, чтобы решить эту проблему.Выход PHP Imagepng не отображается в браузере

У меня есть файл php, который должен возвращать изображение PNG с соответствующими заголовками. Соответствующее содержимое файла в основном. (Ни одна из предыдущих выходных или пробелов перед оператором заголовка)

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

$img = @imagecreatefrompng($path); 

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

Но браузер (Firefox) говорит, что есть н ошибка с изображением, поэтому он не может быть отображен.

Если я сохраняю файл в другом месте и загружаю его с 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

Пожалуйста, проверьте свой тип файла (в пути) MIME, не доверяйте типу файла его расширением. Надеюсь, поможет. Если ваш файл не является png-изображением, код не работает должным образом и не отображает данное изображение.

+0

Я уверен, что входной файл является допустимым PNG, и я могу его отобразить, если я напрямую вызываю этот файл с помощью браузера. – noway

+0

haizz, вы не можете быть уверены, что это действительный png или нет, если вы НЕ проверяете его тип mime. Я могу изменить файл abc.gif на abc.png и просмотреть его в браузере. – hungneox

+0

спасибо, но если я распечатаю содержимое файла без какого-либо параметра заголовка, я могу увидеть содержимое файла, начиная с '‰ PNG'. Вот почему я предполагаю, что это PNG-файл. Пожалуйста, дайте мне знать, как проверить тип mime, если я не делаю это правильно. – noway

-1

Это проблемы с версией библиотеки GD.

imagepng($resource) 

... произведение старый версия GD Libray. Новая версия:

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

Wut? Откуда вы это взяли? – deceze

Смежные вопросы