def cmsDoBitmapTransform(hTransform, inImage, inMode, outMode): """ The method provides PIL images support for color management. hTransform - a valid lcms transformation handle inImage - a valid PIL image object inMode, outMode - - predefined string constant (i.e. TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8) or valid PIL mode Currently supports RGB, RGBA and CMYK modes only. Returns new PIL image object in outMode colorspace. """ if not inImage.mode == inMode: raise pycmsError, "incorrect inMode" if not inImage.mode in [TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8]: raise pycmsError, "unsupported image type: %s"%inImage.mode if not inMode in [TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8]: raise pycmsError, "unsupported inMode type: %s"%inMode if not outMode in [TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8]: raise pycmsError, "unsupported outMode type: %s"%outMode w, h = inImage.size inImage.load() outImage=Image.new(outMode, (w, h)) _pycms.transformBitmap(hTransform, inImage.im, outImage.im, w, h) return outImage
def cmsDoBitmapTransform(hTransform, inImage, inMode, outMode): """ The method provides PIL images support for color management. hTransform - a valid lcms transformation handle inImage - a valid PIL image object inMode, outMode - - predefined string constant (i.e. TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8) or valid PIL mode Currently supports RGB, RGBA and CMYK modes only. Returns new PIL image object in outMode colorspace. """ if not inImage.mode == inMode: raise pycmsError, "incorrect inMode" if not inImage.mode in [TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8]: raise pycmsError, "unsupported image type: %s" % inImage.mode if not inMode in [TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8]: raise pycmsError, "unsupported inMode type: %s" % inMode if not outMode in [TYPE_RGB_8, TYPE_RGBA_8, TYPE_CMYK_8]: raise pycmsError, "unsupported outMode type: %s" % outMode w, h = inImage.size inImage.load() outImage = Image.new(outMode, (w, h)) _pycms.transformBitmap(hTransform, inImage.im, outImage.im, w, h) return outImage
def getImageFromPixels(pixels, mode, width, height): """ Creates new image using provided pixel array. pixels - pixel array wrapped as a python object. mode - pixel array appropriate PIL mode. width, height - pixel array appropriate image size. Returns new PIL image object. """ image=Image.new(mode,(width,height)) pixel = image.getpixel((0,0)) bytes_per_pixel = 1 if type(pixel) is types.TupleType: bytes_per_pixel = len(pixel) if image.mode == TYPE_RGB_8: bytes_per_pixel = 4 _pycms.setImagePixels(pixels, image.im, width, height, bytes_per_pixel) return image
def getImageFromPixels(pixels, mode, width, height): """ Creates new image using provided pixel array. pixels - pixel array wrapped as a python object. mode - pixel array appropriate PIL mode. width, height - pixel array appropriate image size. Returns new PIL image object. """ image = Image.new(mode, (width, height)) pixel = image.getpixel((0, 0)) bytes_per_pixel = 1 if type(pixel) is types.TupleType: bytes_per_pixel = len(pixel) if image.mode == TYPE_RGB_8: bytes_per_pixel = 4 _pycms.setImagePixels(pixels, image.im, width, height, bytes_per_pixel) return image
def axial_gradient(self, properties, rect): pattern = properties.fill_pattern vx, vy = pattern.Direction() angle = atan2(vy, vx) - pi / 2 center = rect.center() rot = Rotation(angle, center) left, bottom, right, top = rot(rect) trafo = rot(Translation(center)) image = Image.new('RGB', (1, 200)) border = int(round(100 * pattern.Border())) result=[] colors=pattern.Gradient().Colors() for color in colors: result.append((color[0],color[1].RGB())) _sketch.fill_axial_gradient(image.im, result, 0, border, 0, 200 - border) self.pdf.saveState() apply(self.pdf.transform, trafo.coeff()) self.pdf.drawInlineImage(image, (left - right) / 2, (bottom - top) / 2, right - left, top - bottom) self.pdf.restoreState()
def axial_gradient(self, properties, rect): pattern = properties.fill_pattern vx, vy = pattern.Direction() angle = atan2(vy, vx) - pi / 2 center = rect.center() rot = Rotation(angle, center) left, bottom, right, top = rot(rect) trafo = rot(Translation(center)) image = Image.new('RGB', (1, 200)) border = int(round(100 * pattern.Border())) result = [] colors = pattern.Gradient().Colors() for color in colors: result.append((color[0], color[1].RGB())) _sketch.fill_axial_gradient(image.im, result, 0, border, 0, 200 - border) self.pdf.saveState() apply(self.pdf.transform, trafo.coeff()) self.pdf.drawInlineImage(image, (left - right) / 2, (bottom - top) / 2, right - left, top - bottom) self.pdf.restoreState()