Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”
Posted
技术标签:
【中文标题】Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”【英文标题】:Laravel 4.2 throws NotReadableException "Unsupported image type. GD driver is only able to decode JPG, PNG, GIF or WebP files." 【发布时间】:2018-09-24 20:26:45 【问题描述】:在检查了大约 20 个解决方案后,我放弃了,需要帮助。 我有 2 个 JPG 文件。两者都有适当的 mime,它们对于 upload_max_filesize 来说不是太大,名称还可以,路径也可以。每个解决方案都是针对其中一个问题。
我的问题是当我在第一张图片上运行脚本时没问题,没有错误,对象已创建:
$image1 = Image::make(public_path()."/uploads/goodimage.jpg");
参见示例: https://app.esticrm.pl/uploads/goodimage.jpg
当我在其他图片上运行它时出现错误:
$image2 = Image::make(public_path()."/uploads/badimage.jpg");
参见示例: https://app.esticrm.pl/uploads/badimage.jpg
错误信息:
Intervention\Image\Exception\NotReadableException 不支持 图像类型。 GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。
Windows 和 Linux 上的情况相同。我检查过的每个图形程序和浏览器都打开了文件。 这些问题在 php 从 5.5.x 升级到 5.6.35 后开始出现。以前还好。
【问题讨论】:
dd(public_path()."/uploads/goodimage.jpg") JPEG 流使用什么类型的帧? @user3344003 你的意思是 GD 还是 imagick?像错误一样,GD。 顺序、基线、渐进或其他。 我的 webapp 的每个用户都会创建和上传 JPEG,我不会告诉他们如何存储图片。它应该存储每种类型的流,就像在 5.5.x 中一样。 PHP更新后没有,我正在寻找解决方案。 【参考方案1】:好的,我找到了解决方案:
$image2 = Image::make(file_get_contents(public_path()."/uploads/badimage.jpg"));
也适用于表单中的文件对象:
$image2 = Image::make(file_get_contents(Input::file('upload_file'));
【讨论】:
【参考方案2】:我遇到了同样的问题,我的解决方法是下一个。 我不得不更改 nginx 允许用户在 /etc/nginx.conf 中上传的大小,如下所示:
http
client_max_body_size 100M;
我还必须更改我的 php.ini,以增加上传文件的大小和总大小:
upload_max_filesize = 4M
post_max_size = 16M
希望能帮助到别人
【讨论】:
【参考方案3】:更改 php.ini 文件中的以下变量
post_max_size = 128M upload_max_filesize = 128M
打印 phpinfo() 以找到您的 php.ini 位置。
如果它的 cpanel 在软件部分->php 版本-> 点击“切换到 PHP 选项”。然后更改值。
还将max_execution_time
更改为600
【讨论】:
【参考方案4】:如果您正在下载远程图像并将其与Image::
一起使用,请确保正确下载了该图像。有时当您使用file_get_contens()
时,图像不会被下载或大小为 0。
所以下载远程图像的更好方法是使用 CURL,但在这种情况下,您必须确保远程 url 是 https
$content = $this->url_get_contents(str_replace('http://','https://',$remote_img_path));
url_get_contents()
是 curl 获取远程图像的地方
正如 floyk.com 上所解释的:
https://floyk.com/en/post/laravel-unsupported-image-type-gd-driver-is-only-able-to-decode-jpg-png-gif-or-webp-files
【讨论】:
以上是关于Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”的主要内容,如果未能解决你的问题,请参考以下文章
Composer - Forked Laravel 4.2 未安装
text 用于Laravel 4.2 #laravel的PHP 7.1加密器