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 和 Adobe Photoshop 以及各种 Windows 软件中打开时,这又很奇怪。
【参考方案1】:
感谢@Lessmore 上面的回答,GD 报告了一个无效的 JPG 文件,因此进一步搜索在 *** 上发现了这个答案,它通过从字符串而不是文件中读取 JPG 来解决问题:
Reading an invalid JPG with GD
谢谢大家 - 一如既往!
【讨论】:
以上是关于GD 无法创建 JPG的主要内容,如果未能解决你的问题,请参考以下文章