Skip to content

Commit 2b8fdd1

Browse files
committed
deepzoom: add ICC profile in returned tiles
Signed-off-by: Benjamin Gilbert <[email protected]>
1 parent a451075 commit 2b8fdd1

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

openslide/deepzoom.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ def get_tile(self, level, address):
171171
# Read tile
172172
args, z_size = self._get_tile_info(level, address)
173173
tile = self._osr.read_region(*args)
174+
profile = tile.info.get('icc_profile')
174175

175176
# Apply on solid background
176177
bg = Image.new('RGB', tile.size, self._bg_color)
@@ -182,6 +183,10 @@ def get_tile(self, level, address):
182183
# Image.LANCZOS removed in Pillow 10
183184
tile.thumbnail(z_size, getattr(Image, 'Resampling', Image).LANCZOS)
184185

186+
# Reference ICC profile
187+
if profile is not None:
188+
tile.info['icc_profile'] = profile
189+
185190
return tile
186191

187192
def _get_tile_info(self, dz_level, t_location):

tests/test_deepzoom.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
from common import file_path
2323

24-
from openslide import ImageSlide, OpenSlide
24+
from openslide import ImageSlide, OpenSlide, lowlevel
2525
from openslide.deepzoom import DeepZoomGenerator
2626

2727

@@ -77,6 +77,11 @@ def test_metadata(self):
7777
def test_get_tile(self):
7878
self.assertEqual(self.dz.get_tile(9, (1, 0)).size, (47, 250))
7979

80+
def test_tile_color_profile(self):
81+
if self.CLASS is OpenSlide and not lowlevel.read_icc_profile.available:
82+
self.skipTest("requires OpenSlide 4.0.0")
83+
self.assertEqual(len(self.dz.get_tile(9, (1, 0)).info['icc_profile']), 588)
84+
8085
def test_get_tile_bad_level(self):
8186
self.assertRaises(ValueError, lambda: self.dz.get_tile(-1, (0, 0)))
8287
self.assertRaises(ValueError, lambda: self.dz.get_tile(10, (0, 0)))

0 commit comments

Comments
 (0)