php - 可怕的 "Warning: imagecreatefromjpeg() : '/tmp/filename' 不是一个有效的 JPEG 文件 in/phpfile.php on line xxx”

标签 php image image-processing file-upload upload

当有人将图片上传到我们的网站时,我一直收到此警告:

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /home/pathremoved/includes/snapsutils.php on line 220

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '/tmp/phpiw4MFk' is not a valid JPEG file in /home/pathremoved.php on line 220

Warning: imagesx(): supplied argument is not a valid Image resource in /home/pathremoved.php on line 222

Warning: imagesy(): supplied argument is not a valid Image resource in /home/pathremoved.php on line 223

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/pathremoved.php on line 240

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/pathremoved.php on line 242

这只发生在某些图像上,当在任何程序中打开时都可以,它甚至可以毫无问题地上传到我在本地主机上的网站版本……我用谷歌搜索了一下,但没有找到任何结论……

注意 php upload_max 大小为 5M,post_max_size 为 5M。这不是上传或内存问题。我已经使用 4M 图像进行了测试,没有问题。

感谢任何帮助。

最佳答案

在 Google 上搜索了一下后,我找到了 this bug report .似乎 GD 库对错误的 JPEG 文件的容忍度低于其他程序。建议的解决方案是在处理图像之前将 GD 设置为忽略 JPEG 错误,如下所示:

ini_set("gd.jpeg_ignore_warning", 1);

希望这对您有用。您可能遇到的另一个潜在问题与内存有关。似乎 GD 在打开后将所有图像作为位图保存在内存中。这意味着一个 5MB 的图像实际上可以消耗比单个 PHP 线程所允许的更多的内存,从而导致 fatal error 。我在上传一些图片时遇到了这个问题,不得不减小我允许的最大文件大小来解决这个问题。

祝你好运,希望对你有所帮助。

关于php - 可怕的 "Warning: imagecreatefromjpeg() : '/tmp/filename' 不是一个有效的 JPEG 文件 in/phpfile.php on line xxx”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901455/

相关文章:

php - 无法在 codeigniter 平台中加载 css

php - 在使用 Twitter API 和 PHP 在 Twitter 中发布之前编辑我的消息

php - 用户提交表单后获取 Id 时出现问题

html - 当图像位于 div 中时,如何将其置于 HTML 中心?

c++ - 什么是具有自己类类型的良好二维数组替代方案

image-processing - 如何从 Rust 中的图像读取像素值

javascript - 使用 jQuery AJAX 和 PHP 创建文件上传进度条

html - 左对齐,并在容器内居中放置内联图像

java - JPanel:显示图像的最简单方法是什么?

python - PIL 消除颜色区域之间的颜色混合