我的PHP无法创建真彩色图像

时间:2016-04-24 07:28:49

标签: php php-gd

我有一个用于创建真彩色图像的脚本。

但是在更改服务器之后,新的PHP安装不会显示图像。

以下是示例: Intent intent = new Intent(this,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

源代码是:

http://www.europasprak.com/engine/system/utils/printBarImage.php?color=%239999FF&width=3&height=10

我的PHP版本5.6.20信息有这样说:

<?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);
  }

?>

更新:我注释掉了图像输出并添加了现有的外部图像进行调试:

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

问题仍然存在。

因此它可能与我的GD设置无关,但与内容类型有关。

我删除了任何BOM字符:

//    imagejpeg($image, NULL, 100);
$img=imagecreatefromjpeg("http://www.google.com/logos/doodles/2016/faten-hamamas-85th-birthday-4804306106580992-hp2x.jpg");
imagejpeg($img, NULL, 100);

我尝试了不同的字符集:

tail --bytes=+4 lib/image.php
tail --bytes=+4 system/utils/printBarImage.php

编辑:我将我的GD库升级为:

iconv -f ISO-8859-1 -t utf-8 ... -o ...

使用error_log()我可以看到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 函数调用创建了资源ID#678,$image = imagecreatetruecolor($width, $height);函数调用返回颜色代码6737049。

但这个问题仍然存在。

我还尝试使用其他功能代替$color = imagecolorallocate($image, $r, $g, $b);,因此我首先尝试imagejpeg($image, NULL, 100);然后imagepng($image);,但问题仍然是相同的。

如果我注释掉imagegif($image);,则输出如下:header("Content-type:image/jpeg");,其源代码为:

����JFIF``��

我选择的浏览器是Chrome。

现在,如果我在Firefox中打开图像,它会显示:����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��������������������������������������������������������������������������?�@����(�� (��?�

编辑:我添加了一些错误报告,日志显示:

The image ... cannot be displayed because it contains errors.

1 个答案:

答案 0 :(得分:0)

我将PHP升级到5.6.30并解决了这个问题。