Skip to content

Commit 05a6010

Browse files
committed
Fixed loading rotated PCD images
1 parent 35f23fb commit 05a6010

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

Tests/test_file_pcd.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
from PIL import Image
88

9+
from .helper import assert_image_equal
10+
911

1012
def test_load_raw() -> None:
1113
with Image.open("Tests/images/hopper.pcd") as im:
@@ -30,3 +32,8 @@ def test_rotated(orientation: int) -> None:
3032
f = BytesIO(data)
3133
with Image.open(f) as im:
3234
assert im.size == (512, 768)
35+
36+
with Image.open("Tests/images/hopper.pcd") as expected:
37+
assert_image_equal(
38+
im, expected.rotate(90 if orientation == 1 else -90, expand=True)
39+
)

src/PIL/PcdImagePlugin.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,17 @@ def _open(self) -> None:
4747

4848
self._mode = "RGB"
4949
self._size = (512, 768) if orientation in (1, 3) else (768, 512)
50-
self.tile = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048)]
50+
self.tile = [ImageFile._Tile("pcd", (0, 0, 768, 512), 96 * 2048)]
51+
52+
def load_prepare(self) -> None:
53+
if self._im is None and self.tile_post_rotate:
54+
self.im = Image.core.new(self.mode, (768, 512))
55+
ImageFile.ImageFile.load_prepare(self)
5156

5257
def load_end(self) -> None:
5358
if self.tile_post_rotate:
5459
# Handle rotated PCDs
55-
self.im = self.im.rotate(self.tile_post_rotate)
60+
self.im = self.rotate(self.tile_post_rotate, expand=True).im
5661

5762

5863
#

0 commit comments

Comments
 (0)