我有一个用于创建真彩色图像的脚本。
但是在更改服务器之后,新的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.
答案 0 :(得分:0)
我将PHP升级到5.6.30并解决了这个问题。