任何处理JPEG的PHP函数似乎都不能在我的服务器上运行。
此代码:
<?php
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
?>
创建一个空文件。
使用GIF或PNG功能将按预期创建包含文本“简单文本字符串”的图像。
此:
$im = imagecreatefromjpeg("test.jpg");
返回
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'test.jpg' is not a valid JPEG file in /path/to/test.php on line 2
phpinfo()显示:
gd
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.9
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
网络服务器可以读取任何相关文件。
GIF和PNG功能正常,并且符合预期。
有什么想法吗?
修改
在我的Apache错误日志文件中找到了这个:
gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library version: library is 80, caller expects 62
答案 0 :(得分:6)
您的错误日志清楚地显示您的PHP是根据/需要libjpeg
版本62编译的,而服务器上的库是版本80.
安装正确版本的libjpeg
,或重新编译gd
/ php
。
答案 1 :(得分:0)
文件test.jpg
似乎不存在,或者不是正确的文件类型标题(例如,如果有人将test.png重命名为test.jpg,它仍然会有.png标题)。尝试使用图像编辑程序创建一个新的test.jpg文件,看看它是否有效。
答案 2 :(得分:0)
对我有用的答案是完全围绕图像处理,并以字符串的形式将其视为trearit。
我会尝试以标准方式进行操作,但如果不起作用,请尝试将其作为字符串
$src = imagecreatefromjpeg($file);
if (!$src) {
$src = imagecreatefromstring(file_get_contents($file));
}
很显然,GD的较旧版本或组合有一些问题。
我认为我的图片使用的是jpeg 7的较新版本/压缩版本。