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
Exemple #2
0
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
Exemple #4
0
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()