给图片生成水印,将图片读入内存时有以下代码段
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);
但是我试了一下没生效。
参考文章:

在使用PHP的imagecreatefromjpeg()函数为图片添加水印时,遇到一个警告:文件不是有效的JPEG。通过修改代码片段或者尝试其他解决方案,如检查图片二进制数据来解决问题。参考了Stack Overflow和PHP官方bug报告。
最低0.47元/天 解锁文章
2371

被折叠的 条评论
为什么被折叠?



