GD,加载 libJPEG,imagejpeg 返回 false

Posted

技术标签:

【中文标题】GD,加载 libJPEG,imagejpeg 返回 false【英文标题】:GD, libJPEG loaded, imagejpeg returns false 【发布时间】:2012-01-21 13:27:01 【问题描述】:

我对 php、GD 和 libJPEG 有一个奇怪的行为

这是我用于 GD 的 phpinfo():

GD Support  enabled
GD Version  bundled (2.0.34 compatible)
GIF Read Support    enabled
GIF Create Support  enabled
JPEG Support    enabled
libJPEG Version 8
PNG Support enabled
libPNG Version  1.2.44
WBMP Support    enabled
XBM Support enabled

这就是我正在做的:

$img = imagecreatefromjpeg("/home/logo.jpg");
var_dump($img)

结果为假。图像存在,并且 chmodded 777。

我正在运行 php 5.3.9,还在 JPEG png 转换和其他 JPEG 操作上进行测试失败。

有什么想法吗?谢谢!

找到解决方案:从 ./configure 中删除 --disable-rpath。现在我要拿起枪朝我的头部开枪。

【问题讨论】:

如果大多数测试用例都失败了,那显然是你的 libJPG 库出了问题。 还有其他人在使用 libJPEG 8 时遇到问题吗?实际上我在另一台使用 libJPEG 6 的服务器上没有问题 【参考方案1】:

运行

 $data = getimagesize("/home/logo.jpg");
 var_dump($data);

并确保图像的 MIME TYPE 是 image/jpeg

另一个原因可能是文件路径不正确(可能需要去掉开头的“/”,只留下imagecreatefromjpeg("home/logo.jpg") [如果主目录与您的 php 文件处于同一级别 - 比您应该]

【讨论】:

返回:array(7) [0]=> int(200) [1]=> int(200) [2]=> int(2) [3]=> string(24 ) " " ["bits"]=> int(8) ["channels"]=> int(3) ["mime"]=> string(10) "image/jpeg " 这是正确的 @spacenick 你能上传图片以便我们更深入地研究问题吗?另一个不错的选择是使用 Imagick 库,这是一个面向对象的图像处理库,其结果比 GD 好得多 是的,实际上它似乎与图像无关,因为它实际上不适用于任何图像(我制作了一个小的上传/裁剪头像脚本,并使用我的 logo.jpg 图像进行了测试) .它设法获得尺寸等但没有打开它仍然很恶心:/ 也许imagecreatefromstring(file_get_contents("home/logo.jpg")); 会起作用。检查您的系统是否启用了fopen功能,否则imagecreatefromjpeg将不起作用

以上是关于GD,加载 libJPEG,imagejpeg 返回 false的主要内容,如果未能解决你的问题,请参考以下文章

调用未定义函数 Intervention\Image\Gd\imagejpeg()"

Docker PHP-FPM 调用未定义函数 Intervention\Image\Gd\imagejpeg()

PHP GD imagejpeg:输出文件大小比原始文件大

imagejpeg() 权限问题

扩展函数中不存在 imagejpeg

php jquery jcrop 和 imagejpeg