如何使用ICC配置文件对一组任意像素值(而不是图像数据结构)执行颜色转换?
发布于 2021-01-29 17:14:24
关注者
0
被浏览
155
1 个回答
-
为了将Little
CMS的当前2.3版本与Python一起使用,我将其翻译lcms2.h
为Python发行版中随附lcms2consts.py
的h2py.py
脚本。该脚本不会转换结构声明,但这些常量足以使用ctypes
和lcms2
作为动态库进行基本的颜色转换。本示例使用内置配置文件将单色从双精度Lab转换为8位sRGB。使用
cmsOpenProfileFromFile(filename, 'r')
代替的文件。import ctypes from ctypes import byref from lcms2consts import * lcms = ctypes.windll.lcms2 inprof = lcms.cmsCreateLab4Profile(0) outprof = lcms.cmsCreate_sRGBProfile() xform = lcms.cmsCreateTransform(inprof, TYPE_Lab_DBL, outprof, TYPE_RGB_8, INTENT_PERCEPTUAL, 0) lcms.cmsCloseProfile(inprof) lcms.cmsCloseProfile(outprof) DblTriplet = ctypes.c_double * 3 ByteTriplet = ctypes.c_ubyte * 3 inbuf = DblTriplet(60.1,20.2,0.5) outbuf = ByteTriplet() lcms.cmsDoTransform(xform, byref(inbuf), byref(outbuf), 1) print list(outbuf) lcms.cmsDeleteTransform(xform)