def lab_to_rgb(l, a, b): lab = lcms.cmsCIELab(l, a, b) rgb = lcms.COLORB() rgb[0] = rgb[1] = rgb[2] = 0 lcms.cmsDoTransform(lab2rgb, lab, rgb, 1) # return rgb return rgb[0] / 255.0, rgb[1] / 255.0, rgb[2] / 255.0
def rgb_to_lab(r, g, b): rgb = lcms.COLORB() rgb[0] = r rgb[1] = g rgb[2] = b lab = lcms.cmsCIELab(0, 0, 0) lcms.cmsDoTransform(rgb2lab, rgb, lab, 1) return lab.L, lab.a, lab.b
def processRGB(self,r,g,b): RGB = COLORB() RGB[0] = int(round(r, 3)*255) RGB[1] = int(round(g, 3)*255) RGB[2] = int(round(b, 3)*255) outRGB = COLORB() outRGB[0] = 0 outRGB[1] = 0 outRGB[2] = 0 cmsDoTransform(self.rgb_monitor, RGB, outRGB, 1) return round(outRGB[0]/255.0, 3), round(outRGB[1]/255.0, 3), round(outRGB[2]/255.0, 3)
def processCMYK(self,c,m,y,k): CMYK = COLORB() CMYK[0] = int(round(c, 3)*255) CMYK[1] = int(round(m, 3)*255) CMYK[2] = int(round(y, 3)*255) CMYK[3] = int(round(k, 3)*255) outRGB = COLORB() outRGB[0] = 0 outRGB[1] = 0 outRGB[2] = 0 cmsDoTransform(self.cmyk_rgb, CMYK, outRGB, 1) return round(outRGB[0]/255.0, 3), round(outRGB[1]/255.0, 3), round(outRGB[2]/255.0, 3)
def convertRGB(self,r,g,b): RGB = COLORB() RGB[0] = int(round(r, 3)*255) RGB[1] = int(round(g, 3)*255) RGB[2] = int(round(b, 3)*255) CMYK = COLORB() CMYK[0] = 0 CMYK[1] = 0 CMYK[2] = 0 CMYK[3] = 0 cmsDoTransform(self.rgb_cmyk, RGB, CMYK, 1) return round(CMYK[0]/255.0, 3), round(CMYK[1]/255.0, 3), round(CMYK[2]/255.0, 3), round(CMYK[3]/255.0, 3)
def transform(self, rgb): # rgb : ny, nx, 3 rgb = np.asarray(rgb, dtype=np.int) orig_shape = rgb.shape rgb.shape = (-1, orig_shape[-1]) RGB = lcms.COLORB() CMYK = lcms.COLORB() cmyk_ = [(lcms.cmsDoTransform(self.RGB2CMYK_transform, RGB, CMYK, 1), (CMYK[0], CMYK[1], CMYK[2], CMYK[3]))[1] \ for rgb1 in rgb for RGB[0], RGB[1], RGB[2] in [map(int, rgb1)]] shape = orig_shape[:-1] + (4,) cmyk = np.array(cmyk_).reshape(shape) return cmyk