Exemplo n.º 1
0
def getcolor(color, mode):
    # same as getrgb, but converts the result to the given mode
    color = getrgb(color)
    if mode == "RGB":
        return color
    if mode == "RGBA":
        r, g, b = color
        return r, g, b, 255
    if Image.getmodebase(mode) == "L":
        r, g, b = color
        return (r * 299 + g * 587 + b * 114) / 1000
    return color
Exemplo n.º 2
0
def getcolor(color, mode):
	# same as getrgb, but converts the result to the given mode
	color = getrgb(color)
	if mode == "RGB":
		return color
	if mode == "RGBA":
		r, g, b = color
		return r, g, b, 255
	if Image.getmodebase(mode) == "L":
		r, g, b = color
		return (r*299 + g*587 + b*114)/1000
	return color
Exemplo n.º 3
0
	def __init__(self, image, size=None):
		if hasattr(image, "mode") and hasattr(image, "size"):
			mode = image.mode
			size = image.size
		else:
			mode = image
			image = None
		if mode not in ["1", "L", "P", "RGB"]:
			mode = Image.getmodebase(mode)
		self.image = Image.core.display(mode, size)
		self.mode = mode
		self.size = size
		if image:
			self.paste(image)
Exemplo n.º 4
0
 def __init__(self, image, size=None):
     if hasattr(image, "mode") and hasattr(image, "size"):
         mode = image.mode
         size = image.size
     else:
         mode = image
         image = None
     if mode not in ["1", "L", "P", "RGB"]:
         mode = Image.getmodebase(mode)
     self.image = Image.core.display(mode, size)
     self.mode = mode
     self.size = size
     if image:
         self.paste(image)
Exemplo n.º 5
0
    def show(self, image, **options):

        # save temporary image to disk
        if image.mode[:4] == "I;16":
            # @PIL88 @PIL101
            # "I;16" isn't an 'official' mode, but we still want to
            # provide a simple way to show 16-bit images.
            base = "L"
            # FIXME: auto-contrast if max() > 255?
        else:
            base = Image.getmodebase(image.mode)
        if base != image.mode and image.mode != "1":
            image = image.convert(base)

        self.show_image(image, **options)
Exemplo n.º 6
0
	def show(self, image, **options):

		# save temporary image to disk
		if image.mode[:4] == "I;16":
			# @PIL88 @PIL101
			# "I;16" isn't an 'official' mode, but we still want to
			# provide a simple way to show 16-bit images.
			base = "L"
			# FIXME: auto-contrast if max() > 255?
		else:
			base = Image.getmodebase(image.mode)
		if base != image.mode and image.mode != "1":
			image = image.convert(base)

		self.show_image(image, **options)
Exemplo n.º 7
0
def _save(im, fp, filename):

	if _imaging_gif:
		# call external driver
		try:
			_imaging_gif.save(im, fp, filename)
			return
		except IOError:
			pass # write uncompressed file

	try:
		rawmode = RAWMODE[im.mode]
		imOut = im
	except KeyError:
		# convert on the fly (EXPERIMENTAL -- I'm not sure PIL
		# should automatically convert images on save...)
		if Image.getmodebase(im.mode) == "RGB":
			imOut = im.convert("P")
			rawmode = "P"
		else:
			imOut = im.convert("L")
			rawmode = "L"

	# header
	for s in getheader(imOut, im.encoderinfo):
		fp.write(s)

	flags = 0

	try:
		interlace = im.encoderinfo["interlace"]
	except KeyError:
		interlace = 1

	# workaround for @PIL153
	if min(im.size) < 16:
		interlace = 0

	if interlace:
		flags = flags | 64

	try:
		transparency = im.encoderinfo["transparency"]
	except KeyError:
		pass
	else:
		# transparency extension block
		fp.write("!" +
				 chr(249) +			 # extension intro
				 chr(4) +			   # length
				 chr(1) +			   # transparency info present
				 o16(0) +			   # duration
				 chr(int(transparency)) # transparency index
				 + chr(0))

	# local image header
	fp.write("," +
			 o16(0) + o16(0) +		  # bounding box
			 o16(im.size[0]) +		  # size
			 o16(im.size[1]) +
			 chr(flags) +			   # flags
			 chr(8))					# bits

	imOut.encoderconfig = (8, interlace)

	ImageFile._save(imOut, fp, [("gif", (0,0)+im.size, 0, rawmode)])

	fp.write("\0") # end of image data

	fp.write(";") # end of file

	try:
		fp.flush()
	except: pass