iCCP: known incorrect sRGB profile

时间:2024-11-17 16:03:34

关注公众号“码农帮派”,查看更多系列技术文章:

 
在win7系统中,微软提高了对图片质量的检测,项目中的图片可能会弹出下面的警告框:

"iccp known incorrect sRGB profile" 警告

(不同系统上的ImageMagic下载地址:/script/
这不是错误,但为了提高用户的体验,需要将这个框 去除,可以使用ImageMagick对图片进行转换,其实是该软件中这个工具进行图片转换的:
. 使用对D盘下的logo_sys.png进行转换,在cmd中执行:
 D:\logo_sys.png D:\logo_sys.png
下面的程序可以批量处理文件夹下所有的图片文件:
import os
# rootPath是需要转换的图片所在的根目录
rootPath = "D:/icon"
# 所在的路径
commandTool = ()++"tools"++''
# 获得rootPath目录下所有图片文件的全路径
def FindExamAllFiles():
    tmp = []
    for root, dirs, files in (rootPath):
        for filepath in files:
            imgFileFullPath = (root, filepath)
            if ('.png'):
                (imgFileFullPath)
    return tmp

if __name__ == "__main__":
    pngPathList = FindExamAllFiles()
    for pngPath in pngPathList:
        # 拼凑cmd命令
        command = "{0} {1} {2}".format(commandTool, pngPath, pngPath)
        (command)
要是我们的应用会涉及到用户自主导入图片的操作,为了保证不弹出sRGB警告框,可以在每次读入图片文件之后,调用下面的函数,首先对图片进行sRGB处理: (winXP下不会有sRGB的警告,win7-32bit和win7-64bit下处理图片sRGB警告的工具版本不同)
 
import platform # 处理文件夹中单个的图片 
def convertsRGBImageFromTmp(iconName): winVerName = platform.win32_ver()[0] if winVerName != None: if () == '7': arch = ()[0] if () == '64BIT': commandTool = ()++"tools"++'magick_64.exe'  else: commandTool = ()++"tools"++''   pngPath = ()++'tmp'++iconName command = "{0} {1} {2}".format(commandTool, pngPath, pngPath) try: (command) except: pass  else: return  pass
因为sRGB的检测是在win7以及之后版本的系统上才有的,在XP的系统上是无需进行该操作的,Python提供了platform这个库来检测当前系统的版本,我们可以使用platform.win32_ver()[0]获得版本的名称,并进行不同的操作。
 
【下载】文件和Python转换代码文件的下载--/detail/tianmaxingkong_/9766841