Exemplo n.º 1
0
def open(filename):
	# FIXME: modify to return a WalImageFile instance instead of
	# plain Image object ?

	if hasattr(filename, "read"):
		fp = filename
	else:
		import __builtin__
		fp = __builtin__.open(filename, "rb")

	# read header fields
	header = fp.read(32+24+32+12)
	size = i32(header, 32), i32(header, 36)
	offset = i32(header, 40)

	# load pixel data
	fp.seek(offset)

	im = Image.fromstring("P", size, fp.read(size[0] * size[1]))
	im.putpalette(quake2palette)

	im.format = "WAL"
	im.format_description = "Quake2 Texture"

	# strings are null-terminated
	im.info["name"] = header[:32].split("\0", 1)[0]
	next_name = header[56:56+32].split("\0", 1)[0]
	if next_name:
		im.info["next_name"] = next_name

	return im
Exemplo n.º 2
0
def open(filename):
    # FIXME: modify to return a WalImageFile instance instead of
    # plain Image object ?

    if hasattr(filename, "read"):
        fp = filename
    else:
        import __builtin__
        fp = __builtin__.open(filename, "rb")

    # read header fields
    header = fp.read(32 + 24 + 32 + 12)
    size = i32(header, 32), i32(header, 36)
    offset = i32(header, 40)

    # load pixel data
    fp.seek(offset)

    im = Image.fromstring("P", size, fp.read(size[0] * size[1]))
    im.putpalette(quake2palette)

    im.format = "WAL"
    im.format_description = "Quake2 Texture"

    # strings are null-terminated
    im.info["name"] = header[:32].split("\0", 1)[0]
    next_name = header[56:56 + 32].split("\0", 1)[0]
    if next_name:
        im.info["next_name"] = next_name

    return im
Exemplo n.º 3
0
		def load(self, im):
			im.fp.seek(0) # rewind
			return Image.fromstring(
				"RGB", im.size,
				Image.core.drawwmf(im.fp.read(), im.size, self.bbox),
				"raw", "BGR", (im.size[0]*3 + 3) & -4, -1
				)
Exemplo n.º 4
0
def grab(bbox=None):
	size, data = grabber()
	im = Image.fromstring(
		"RGB", size, data,
		# RGB, 32-bit line padding, origo in lower left corner
		"raw", "BGR", (size[0]*3 + 3) & -4, -1
		)
	if bbox:
		im = im.crop(bbox)
	return im
Exemplo n.º 5
0
def grab(bbox=None):
    size, data = grabber()
    im = Image.fromstring(
        "RGB",
        size,
        data,
        # RGB, 32-bit line padding, origo in lower left corner
        "raw",
        "BGR",
        (size[0] * 3 + 3) & -4,
        -1)
    if bbox:
        im = im.crop(bbox)
    return im
Exemplo n.º 6
0
	def _load_bitmaps(self, metrics):

		#
		# bitmap data

		bitmaps = []

		fp, format, i16, i32 = self._getformat(PCF_BITMAPS)

		nbitmaps = i32(fp.read(4))

		if nbitmaps != len(metrics):
			raise IOError, "Wrong number of bitmaps"

		offsets = []
		for i in range(nbitmaps):
			offsets.append(i32(fp.read(4)))

		bitmapSizes = []
		for i in range(4):
			bitmapSizes.append(i32(fp.read(4)))

		byteorder = format & 4 # non-zero => MSB
		bitorder  = format & 8 # non-zero => MSB
		padindex  = format & 3

		bitmapsize = bitmapSizes[padindex]
		offsets.append(bitmapsize)

		data = fp.read(bitmapsize)

		pad  = BYTES_PER_ROW[padindex]
		mode = "1;R"
		if bitorder:
			mode = "1"

		for i in range(nbitmaps):
			x, y, l, r, w, a, d, f = metrics[i]
			b, e = offsets[i], offsets[i+1]
			bitmaps.append(
				Image.fromstring("1", (x, y), data[b:e], "raw", mode, pad(x))
				)

		return bitmaps
Exemplo n.º 7
0
    def _load_bitmaps(self, metrics):

        #
        # bitmap data

        bitmaps = []

        fp, format, i16, i32 = self._getformat(PCF_BITMAPS)

        nbitmaps = i32(fp.read(4))

        if nbitmaps != len(metrics):
            raise IOError, "Wrong number of bitmaps"

        offsets = []
        for i in range(nbitmaps):
            offsets.append(i32(fp.read(4)))

        bitmapSizes = []
        for i in range(4):
            bitmapSizes.append(i32(fp.read(4)))

        byteorder = format & 4  # non-zero => MSB
        bitorder = format & 8  # non-zero => MSB
        padindex = format & 3

        bitmapsize = bitmapSizes[padindex]
        offsets.append(bitmapsize)

        data = fp.read(bitmapsize)

        pad = BYTES_PER_ROW[padindex]
        mode = "1;R"
        if bitorder:
            mode = "1"

        for i in range(nbitmaps):
            x, y, l, r, w, a, d, f = metrics[i]
            b, e = offsets[i], offsets[i + 1]
            bitmaps.append(
                Image.fromstring("1", (x, y), data[b:e], "raw", mode, pad(x)))

        return bitmaps
Exemplo n.º 8
0
def bdf_char(f):

	# skip to STARTCHAR
	while 1:
		s = f.readline()
		if not s:
			return None
		if s[:9] == "STARTCHAR":
			break
	id = string.strip(s[9:])

	# load symbol properties
	props = {}
	while 1:
		s = f.readline()
		if not s or s[:6] == "BITMAP":
			break
		i = string.find(s, " ")
		props[s[:i]] = s[i+1:-1]

	# load bitmap
	bitmap = []
	while 1:
		s = f.readline()
		if not s or s[:7] == "ENDCHAR":
			break
		bitmap.append(s[:-1])
	bitmap = string.join(bitmap, "")

	[x, y, l, d] = map(int, string.split(props["BBX"]))
	[dx, dy] = map(int, string.split(props["DWIDTH"]))

	bbox = (dx, dy), (l, -d-y, x+l, -d), (0, 0, x, y)

	try:
		im = Image.fromstring("1", (x, y), bitmap, "hex", "1")
	except ValueError:
		# deal with zero-width characters
		im = Image.new("1", (x, y))

	return id, int(props["ENCODING"]), bbox, im
Exemplo n.º 9
0
 def load(self, im):
     im.fp.seek(0)  # rewind
     return Image.fromstring(
         "RGB", im.size,
         Image.core.drawwmf(im.fp.read(), im.size, self.bbox), "raw",
         "BGR", (im.size[0] * 3 + 3) & -4, -1)