在执行 Magento 批量导入 CSV 产品信息时,出现了错误。
报错信息
1.lmported resource (image) could not be downloded from external resource due to timeout or access permissions in row 1.
排除权限问题
在 pub/media 目录下(也可能在自定义的目录下,例如 pub/media/
不放心,执行了 cp 命令,复制了一份图片到另一目录下,也没有报错。
从浏览器中访问图片链接,发现可以正常访问。显示正常。
于是陷入了没有思路的状态。。。😅
exception.log 发现线索
var/log/exception.log
可以看到一段警告信息:
#51 {main} {"exception":"[object] (Exception(code: 0): Warning: imagecreatefrompng(): gd-png: libpng warning: iCCP: known incorrect sRGB profile in vendor/magento/framework/Image/Adapter/Gd2.php on line 80 at vendor/magento/framework/App/ErrorHandler.php:62)"}
gd-png: libpng warning: iCCP: known incorrect sRGB profile
PNG 图片中包含的 iCCP 颜色配置文件存在问题,被 libpng 库检测为不符合标准的 sRGB 配置。
具体来说:
- PNG 格式允许在图片中嵌入 iCCP 块(Image Color Configuration Profile),用于定义图片的色彩空间标准(如 sRGB 是常用的标准色彩空间)。
- 部分图片的 iCCP 块中,sRGB 配置文件可能存在格式错误、冗余数据或参数不规范等问题(例如旧版本软件生成的非标准配置)。
- libpng 库(处理 PNG 图片的底层库,GD 库等上层工具会依赖它)对 sRGB 配置文件的校验较为严格,当检测到这类不标准的配置时,就会触发该警告。
需要注意的是,这通常只是警告而非错误,多数情况下图片仍能正常显示(软件会自动忽略错误配置,使用默认色彩空间),但说明图片的色彩配置存在不规范之处。
解决办法通常是移除或替换错误的 iCCP 配置文件,可通过图像编辑软件重新保存图片,或用 pngcrush、ImageMagick 等工具批量清理
使用 pngcrush 修正图片
安装 pngcrush:
sudo apt install pngcrush
执行命令,逐一处理有问题的图片:
> pngcrush -ow -rem allb -reduce a.png
Recompressing IDAT chunks in a.png
Total length of data found in critical chunks = 618102
pngcrush: iCCP: known incorrect sRGB profile
Best pngcrush method = 10 (ws 15 fm 6 zl 9 zs 1) = 634566
CPU time decode 0.140915, encode 2.471474, other 0.012497, total 2.645075 sec
批量处理图片
如果有很多 PNG 图片需要处理,可以使用以下命令批量处理:
参考:
https://magento.stackexchange.com/questions/358423/magento-2-4-libpng-warning-iccp-known-incorrect-srgb-profile-wrong-file-file
find pub/media -type f -iname '*.png' -exec pngcrush -ow -rem allb -reduce {} \;
或者限定时间范围,以缩小处理范围。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式