mirror of
https://github.com/irmen/prog8.git
synced 2025-05-13 12:38:19 +00:00
fix cx16images.py script for new pillow library version
This commit is contained in:
parent
7657edcb7d
commit
126d4c69e6
@ -8,7 +8,7 @@ Written by Irmen de Jong (irmen@razorvine.net) - Code is in the Public Domain.
|
|||||||
Requirements: Pillow (pip install pillow)
|
Requirements: Pillow (pip install pillow)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from PIL import Image, PyAccess
|
from PIL import Image
|
||||||
from typing import TypeAlias, Tuple, Optional
|
from typing import TypeAlias, Tuple, Optional
|
||||||
|
|
||||||
RGBList: TypeAlias = list[tuple[int, int, int]]
|
RGBList: TypeAlias = list[tuple[int, int, int]]
|
||||||
@ -93,15 +93,12 @@ class BitmapImage:
|
|||||||
Get a rectangle of pixel values from the image, returns the bytes as a flat array
|
Get a rectangle of pixel values from the image, returns the bytes as a flat array
|
||||||
"""
|
"""
|
||||||
assert self.has_palette()
|
assert self.has_palette()
|
||||||
try:
|
|
||||||
access = PyAccess.new(self.img, readonly=True)
|
|
||||||
except AttributeError:
|
|
||||||
access = self.img
|
|
||||||
data = bytearray(width * height)
|
data = bytearray(width * height)
|
||||||
index = 0
|
index = 0
|
||||||
|
pix = self.img.load()
|
||||||
for py in range(y, y + height):
|
for py in range(y, y + height):
|
||||||
for px in range(x, x + width):
|
for px in range(x, x + width):
|
||||||
data[index] = access.getpixel((px, py))
|
data[index] = pix[px, py]
|
||||||
index += 1
|
index += 1
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@ -112,17 +109,6 @@ class BitmapImage:
|
|||||||
"""
|
"""
|
||||||
assert self.has_palette()
|
assert self.has_palette()
|
||||||
return self.img.tobytes()
|
return self.img.tobytes()
|
||||||
# try:
|
|
||||||
# access = PyAccess.new(self.img, readonly=True)
|
|
||||||
# except AttributeError:
|
|
||||||
# access = self.img
|
|
||||||
# data = bytearray(self.width * self.height)
|
|
||||||
# index = 0
|
|
||||||
# for py in range(self.height):
|
|
||||||
# for px in range(self.width):
|
|
||||||
# data[index] = access.getpixel((px, py))
|
|
||||||
# index += 1
|
|
||||||
# return data
|
|
||||||
|
|
||||||
def get_pixels_4bpp(self, x: int, y: int, width: int, height: int) -> bytearray:
|
def get_pixels_4bpp(self, x: int, y: int, width: int, height: int) -> bytearray:
|
||||||
"""
|
"""
|
||||||
@ -131,16 +117,13 @@ class BitmapImage:
|
|||||||
Every byte encodes 2 pixels (4+4 bits).
|
Every byte encodes 2 pixels (4+4 bits).
|
||||||
"""
|
"""
|
||||||
assert self.has_palette()
|
assert self.has_palette()
|
||||||
try:
|
|
||||||
access = PyAccess.new(self.img, readonly=True)
|
|
||||||
except AttributeError:
|
|
||||||
access = self.img
|
|
||||||
data = bytearray(width // 2 * height)
|
data = bytearray(width // 2 * height)
|
||||||
index = 0
|
index = 0
|
||||||
|
pix = self.img.load()
|
||||||
for py in range(y, y + height):
|
for py in range(y, y + height):
|
||||||
for px in range(x, x + width, 2):
|
for px in range(x, x + width, 2):
|
||||||
pix1 = access.getpixel((px, py))
|
pix1 = pix[px, py]
|
||||||
pix2 = access.getpixel((px + 1, py))
|
pix2 = pix[px + 1, py]
|
||||||
data[index] = pix1 << 4 | pix2
|
data[index] = pix1 << 4 | pix2
|
||||||
index += 1
|
index += 1
|
||||||
return data
|
return data
|
||||||
@ -152,16 +135,13 @@ class BitmapImage:
|
|||||||
Every byte encodes 2 pixels (4+4 bits).
|
Every byte encodes 2 pixels (4+4 bits).
|
||||||
"""
|
"""
|
||||||
assert self.has_palette()
|
assert self.has_palette()
|
||||||
try:
|
|
||||||
access = PyAccess.new(self.img, readonly=True)
|
|
||||||
except AttributeError:
|
|
||||||
access = self.img
|
|
||||||
data = bytearray(self.width // 2 * self.height)
|
data = bytearray(self.width // 2 * self.height)
|
||||||
index = 0
|
index = 0
|
||||||
|
pix = self.img.load()
|
||||||
for py in range(self.height):
|
for py in range(self.height):
|
||||||
for px in range(0, self.width, 2):
|
for px in range(0, self.width, 2):
|
||||||
pix1 = access.getpixel((px, py))
|
pix1 = pix[px, py]
|
||||||
pix2 = access.getpixel((px + 1, py))
|
pix2 = pix[px + 1, py]
|
||||||
data[index] = pix1 << 4 | pix2
|
data[index] = pix1 << 4 | pix2
|
||||||
index += 1
|
index += 1
|
||||||
return data
|
return data
|
||||||
|
Loading…
x
Reference in New Issue
Block a user