This commit is contained in:
Andrew Murray 2025-09-11 00:36:51 +08:00 committed by GitHub
commit eed9cb038c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View File

@ -6,6 +6,8 @@ import pytest
from PIL import Image from PIL import Image
from .helper import assert_image_equal
def test_load_raw() -> None: def test_load_raw() -> None:
with Image.open("Tests/images/hopper.pcd") as im: with Image.open("Tests/images/hopper.pcd") as im:
@ -30,3 +32,8 @@ def test_rotated(orientation: int) -> None:
f = BytesIO(data) f = BytesIO(data)
with Image.open(f) as im: with Image.open(f) as im:
assert im.size == (512, 768) assert im.size == (512, 768)
with Image.open("Tests/images/hopper.pcd") as expected:
assert_image_equal(
im, expected.rotate(90 if orientation == 1 else 270, expand=True)
)

View File

@ -43,16 +43,21 @@ class PcdImageFile(ImageFile.ImageFile):
if orientation == 1: if orientation == 1:
self.tile_post_rotate = 90 self.tile_post_rotate = 90
elif orientation == 3: elif orientation == 3:
self.tile_post_rotate = -90 self.tile_post_rotate = 270
self._mode = "RGB" self._mode = "RGB"
self._size = (512, 768) if orientation in (1, 3) else (768, 512) self._size = (512, 768) if orientation in (1, 3) else (768, 512)
self.tile = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048)] self.tile = [ImageFile._Tile("pcd", (0, 0, 768, 512), 96 * 2048)]
def load_prepare(self) -> None:
if self._im is None and self.tile_post_rotate:
self.im = Image.core.new(self.mode, (768, 512))
ImageFile.ImageFile.load_prepare(self)
def load_end(self) -> None: def load_end(self) -> None:
if self.tile_post_rotate: if self.tile_post_rotate:
# Handle rotated PCDs # Handle rotated PCDs
self.im = self.im.rotate(self.tile_post_rotate) self.im = self.rotate(self.tile_post_rotate, expand=True).im
# #