Magento 批量导入产品报错,原因出在 PNG 图片 sRGB 配置文件错误

文章目录

    在执行 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//product),查看对应的图片的权限。发现没有问题。

    不放心,执行了 cp 命令,复制了一份图片到另一目录下,也没有报错。

    从浏览器中访问图片链接,发现可以正常访问。显示正常。

    于是陷入了没有思路的状态。。。😅

    exception.log 发现线索

    var/log/exception.log

    可以看到一段警告信息:

    #51 {main} {“exception”:”object: 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式