заголовок php, тип контента png не работает - PullRequest
2 голосов
/ 29 февраля 2012

У меня проблемы с заголовками php, я пытаюсь создать любой образ в своем браузере, не сохраняя его в файле, но независимо от того, что я делаю, я не могу заставить его работать.

Так, например, если я использую этот базовый пример из руководства php:

$im = imagecreate(100, 100);

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

imagepng($im);
imagedestroy($im);

Он установит правильный заголовок и даже выведет значок, который вы получаете, когда изображение не найдено.

Также я использую xampp с включенным GD, вот моя phpinfo часть GD:

GD Support  enabled
GD Version  bundled (2.0.34 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.4.3
GIF Read Support    enabled
GIF Create Support  enabled
JPEG Support    enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version  1.2.46
WBMP Support    enabled
XBM Support enabled

Мой код неверен или мне нужно что-то настроить?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

PHP, вероятно, выводит сообщение об ошибке, таким образом портя двоичные данные изображения.По этой причине я всегда отключаю display_errors и включаю log_errors в конфигурации PHP при работе со сценариями изображений;Таким образом, вы можете увидеть любые ошибки, не испортив вывод.Если вы уверены, что в игре нет ошибок PHP, попробуйте выгрузить полный вывод скрипта в файл (ob_start(); в начале скрипта, file_put_contents("outfile", ob_get_clean()); в конце) и проанализируйте его с помощью шестнадцатеричного редактора, чтобы увидеть, чтоиспортить PNG.

2 голосов
/ 29 февраля 2012

Вы должны не только создать изображение, но и заполнить его некоторым образом:

error_reporting(E_ALL);
ini_set('display_errors', 1);

$im = imagecreate(100, 100) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);

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

imagepng($im);
imagedestroy($im);
...