GD 无法创建 JPG

Posted

技术标签:

【中文标题】GD 无法创建 JPG【英文标题】:GD fails to create JPG 【发布时间】:2021-08-08 10:34:00 【问题描述】:

我对 GD 没有创建新的 JPG 文件有疑问,它只是失败了。没有错误消息,也没有关于正在发生的事情的指示。这不是新代码,它在过去的六年里一直在工作,但突然之间有了更大的图像,它就开始失败了。

作为背景,它运行在具有 php5.3.3 和 GD 版本 2.0.34 的旧服务器(将在几个月内关闭并移至 PHP8 上的新站点)上。

代码从高分辨率图像(大约 24-30MB)创建缩略图,并输出一系列从 150 像素宽到 1024 像素宽的缩略图。它失败了。我已将页面上的 PHP 内存限制增加到 512MB,并为损坏的 JPG 设置了 GD.JPEG_ignore_warning 标志。

但每次使用这些文件时,这行:

$src_img = @imagecreatefromjpeg($file_path);

只返回 FALSE。但绝不会因错误而跌倒。该文件肯定存在(使用

对 Google、*** 和其他几个网站的搜索未发现任何类似问题。

任何人都可以就问题/解决方案提供任何想法吗?我已经研究了两天了,我们需要解决它 - 仅使用较小的 JPG 文件不是一个选项。

【问题讨论】:

您是否将您的 php 记录在 error_log 的同一目录中?如果不是如何搜索您的 /etc/httpd/logs/error_log 或在 /var/httpd/logs/error_log 从函数中删除@重试,然后报错 另外,在大多数情况下,当我遇到此类错误时...它们是因为目录的权限...尝试确保允许 php 用户创建和将文件保存在给定的文件路径中。 imagecreatefromjpeg 不会创建图像而是创建资源 @Lessmore 哦,我为什么没看到。我忘记了 @ 忽略错误。删除后,代码会显示一个无效的 JPG 文件,当它在 Apple Quickview、Preview 和 Adob​​e Photoshop 以及各种 Windows 软件中打开时,这又很奇怪。 【参考方案1】:

感谢@Lessmore 上面的回答,GD 报告了一个无效的 JPG 文件,因此进一步搜索在 *** 上发现了这个答案,它通过从字符串而不是文件中读取 JPG 来解决问题:

Reading an invalid JPG with GD

谢谢大家 - 一如既往!

【讨论】:

以上是关于GD 无法创建 JPG的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 node.js 和 GD 或 imagemagick 访问和操作图像

GD库处理图像

php GD库生成分享海报

php GD库生成分享海报

PHP/GD:如何处理 jpg 透明度?

PHP GD - 如何修改我的缩略图创建器以从中心裁剪肖像图像?