php imagecreatefromjpeg return bool(false)问题解决办法

错误描述:

imagecreatefromjpeg返回bool(false)

imagecreatefromjpeg():xxx.jpg is not a valid JPEG file

imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error

PHP载入图像的函数:

  1. imagecreatefromgif()
  2. imagecreatefromjpeg()
  3. imagecreatefrompng()
  4. imagecreatefromwbmp()
  5. imagecreatefromstring()

作用:由文件或URL或字符串中的图像流创建一个新图象,成功后返回图象资源,失败后返回FALSE。

PS:简单的理解其作用就是将要进行分割的图片临时读到内存里面。

错误注释:

错误信息翻译:图片不是一个有效的jpeg文件

错误原因:

出现这种错误一般是因为在处理图片时用的函数和图片格式不一致导致的,例如处理的是png格式的图片你使用的是imagecreatefromjpeg函数。

当然,你可以会疑惑:图片扩展名是.jpg,用imagecreatefromjpeg函数处理没有不对的地方啊?

通常情况下,图片的扩展名和图片的格式一致。但是有些时候也会存在图片的扩展名和图片格式不一致的情况,例如人为修改,本来是png或gif的图片把扩展名改成了jpg,所以有时候我们看到的扩展名并不一定就是图片文件该有的正确的扩展名,所以程序在处理过程中就会抛错返回FALSE。

解决思路:

在进行处理图片时使用getimagesize函数获取图片格式,进而进行判断该使用的图片处理函数。同时,判断返回值是否为FALSE,如果为FALSE尝试其他函数类型。