imagecreatefromjpeg()函数 is not a valid JPEG file 问题

给图片生成水印,将图片读入内存时有以下代码段

switch ($imgType) {
    case "png":
        $img_r = imagecreatefrompng($qipasrc);
        break;

    case "jpg":
        $img_r = imagecreatefromjpeg($qipasrc);
        break;
    case "jpeg":
        $img_r = imagecreatefromjpeg($qipasrc);
        break;

    case "gif":
        $img_r = imagecreatefromgif($qipasrc);
        break;
}

当$imgType 为jpg 时有的图片会报一个warning级别的php错误,错误内容为…is not a valid JPEG file。这里将case "jpg" 中的代码修改为:

$img_r = @ImageCreateFromJPEG($qipasrc);
if (!$img_r) {
    $img_r = imagecreatefromstring(file_get_contents($qipasrc));
}

也有人说添加下面的代码也可以:

ini_set("gd.jpeg_ignore_warning", 1);

但是我试了一下没生效。

参考文章:

https://stackoverflow.com/questions/3901455/the-dreaded-warning-imagecreatefromjpeg-tmp-filename-is-not-a-valid-jp

https://bugs.php.net/bug.php?id=50125

你可能感兴趣的:(php)