У меня есть сценарий, который использовался для создания истинного цветного изображения.
Но после смены сервера новая установка PHP не отображает изображение.
Вот пример: http://www.europasprak.com/engine/system/utils/printBarImage.php?color=%239999FF&width=3&height=10
Исходный код:
<?PHP require_once("website.php"); $color = LibEnv::getEnvHttpGET("color"); $width = LibEnv::getEnvHttpGET("width"); $height = LibEnv::getEnvHttpGET("height"); $color = urldecode($color); if ($color && $width > 0 && $height> 0) { LibImage::printBarImage($color, $width, $height); } // Print a bar image static function printBarImage($color, $width, $height) { // Create a blank image $image = imagecreatetruecolor($width, $height); if (strlen($color) == 6) { $color = "#" . $color; } $r = intval(substr($color, 1, 2), 16); $g = intval(substr($color, 3, 2), 16); $b = intval(substr($color, 5, 2), 16); $color = imagecolorallocate($image, $r, $g, $b); // Fill up the image background imagefilledrectangle($image, 0, 0, $width, $height, $color); // Header indicating the image type header("Content-type:image/jpeg"); // Create the image in the best jpeg quality imagejpeg($image, NULL, 100); // Destroy the image imagedestroy($image); } ?>
Моя версия PHP версии 5.6.20 имеет это, чтобы сказать:
GD Support enabled GD Version bundled (2.1.0 compatible) FreeType Support enabled FreeType Linkage with freetype FreeType Version 2.5.2 GIF Read Support enabled GIF Create Support enabled JPEG Support enabled libJPEG Version 6b PNG Support enabled libPNG Version 1.2.50 WBMP Support enabled XBM Support enabled
UPDATE: я прокомментировал вывод изображения и добавил отлаживаемое внешнее изображение:
// imagejpeg($image, NULL, 100); $img=imagecreatefromjpeg("http://img.ruphp.com/php/faten-hamamas-85th-birthday-4804306106580992-hp2x.jpg"); imagejpeg($img, NULL, 100);
И вопрос остается тем же.
Так что это, вероятно, не связано с моей настройкой GD, но лежит с типом контента.
Я удалил любые символы спецификации:
tail --bytes=+4 lib/image.php tail --bytes=+4 system/utils/printBarImage.php
Я пробовал разные кодировки:
iconv -f ISO-8859-1 -t utf-8 ... -o ...
EDIT: я обновил свою библиотеку GD до:
GD Support enabled GD headers Version 2.2.4 GD library Version 2.2.4 FreeType Support enabled FreeType Linkage with freetype FreeType Version 2.7.1 GIF Read Support enabled GIF Create Support enabled JPEG Support enabled libJPEG Version unknown PNG Support enabled libPNG Version 1.6.28 WBMP Support enabled XPM Support enabled libXpm Version 30411 XBM Support enabled
Использование error_log () Я вижу, что $image = imagecreatetruecolor($width, $height);
вызов функции создает идентификатор ресурса # 678 и что $color = imagecolorallocate($image, $r, $g, $b);
вызов функции возвращает цветовой код 6737049.
Однако этот вопрос остался прежним.
Я также попытался использовать другую функцию вместо imagejpeg($image, NULL, 100);
и поэтому я попробовал сначала imagepng($image);
а затем imagegif($image);
но вопрос остался прежним.
Если я прокомментирую header("Content-type:image/jpeg");
то вывод выглядит следующим образом: JFIF``
с исходным кодом:
JFIF`` <CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 100 C C }!1AQa"q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2 B #3R br $4 % &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? @ ( ( ?
JFIF`` <CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 100 C C }!1AQa"q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2 B #3R br $4 % &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? @ ( ( ?
JFIF`` <CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 100 C C }!1AQa"q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2 B #3R br $4 % &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? @ ( ( ?
Моим браузером является Chrome.
Теперь, если я открываю изображение в Firefox, он показывает это: The image ... cannot be displayed because it contains errors.
,
EDIT: я добавил некоторые сообщения об ошибках, и журнал имел это, чтобы показать:
PHP Parse error: imagepng(): gd-png error: cannot allocate libpng main struct