def _parse_color(lino, line, palette, cpp, count): line = _sanitize_quoted_line(lino, line) key = line[:cpp] parts = line[cpp + 1 :].split() if len(parts) % 2 != 0: raise Image.Error("invalid XPM file line {}: invalid color".format(lino)) pairs = sorted(zip(parts[::2], parts[1::2])) name = pairs[0][1].strip() palette[key] = Image.ColorForName["transparent"] if name.lower() == "none" else Image.color_for_name(name) count -= 1 if count == 0: return count, _WANT_PIXELS return count, _WANT_COLOR
def _parse_color(lino, line, palette, cpp, count): line = _sanitize_quoted_line(lino, line) key = line[:cpp] parts = line[cpp + 1:].split() if len(parts) % 2 != 0: raise Image.Error( "invalid XPM file line {}: invalid color".format(lino)) pairs = sorted(zip(parts[::2], parts[1::2])) name = pairs[0][1].strip() palette[key] = (Image.ColorForName["transparent"] if name.lower() == "none" else Image.color_for_name(name)) count -= 1 if count == 0: return count, _WANT_PIXELS return count, _WANT_COLOR
import Image image = Image.Image.create(64, 64, Image.color_for_name("red")) image.save("red_64x64.xpm")
""" 代理模式 """ import os import tempfile import Image YELLOW, CYAN, BLUE, RED, BLACK = (Image.color_for_name(color) for color in ("yellow", "cyan", "blue", "red", "black")) class ImageProxy: def __init__(self, ImageClass, width=None, height=None, filename=None): assert (width is not None and height is not None) or \ filename is not None self.Image = ImageClass self.commands = [] if filename is not None: self.load(filename) else: self.commands = [(self.Image, width, height)] def load(self, filename): self.commands = [(self.Image, None, None, filename)] def save(self, filename=None): command = self.commands.pop(0) function, *args = command image = function(*args) for command in self.commands: