예제 #1
0
class nbfSurface(baseImageSurface):
    def __init__(self, imageBuffer, size):
        width, height = self.get_size(size)
        self.size = size
        self.surface = Surface((width, height), depth=8)
        # Read the header
        paletteLength, imageDataLength = self.read_ugar_header(imageBuffer)
        # Read the image palette and unpack
        palette = self.unpack_palette(
            np.fromstring(imageBuffer.read(paletteLength), dtype=np.uint16))
        self.surface.set_palette(palette)
        # Read the pixels
        pixels = np.fromstring(imageBuffer.read(imageDataLength),
                               dtype=np.uint8)
        pixels = np.swapaxes(np.reshape(pixels, (-1, width)), 0, 1)
        pixelcopy.array_to_surface(self.surface, pixels)
예제 #2
0
class npfSurface(baseImageSurface):
    def __init__(self, imageBuffer, size):
        width, height = self.get_size(size)
        self.size = size
        self.surface = Surface((width, height), depth=8)
        # Read the header
        paletteLength, imageDataLength = self.read_ugar_header(imageBuffer)
        # Read the image palette and unpack
        palette = self.unpack_palette(
            np.fromstring(imageBuffer.read(self.round_to_power(paletteLength)),
                          dtype=np.uint16))
        self.surface.set_palette(palette)
        # All pixels with the index of 0 are transparent
        self.surface.set_colorkey(0)
        # Read the pixel data bytes
        pixelData = np.fromstring(imageBuffer.read(imageDataLength),
                                  dtype=np.uint8)
        # Split each byte into 2 pixels
        pixels = np.stack((np.bitwise_and(
            pixelData, 0x0f), np.bitwise_and(pixelData >> 4, 0x0f)),
                          axis=-1).flatten()
        pixels = np.swapaxes(np.reshape(pixels, (-1, width)), 0, 1)
        pixelcopy.array_to_surface(self.surface, pixels)