3535# version of the Zarr layout
3636LAYOUT_VERSION = 3
3737
38+ # name of filter to convert 16 bit to 8 bit
39+ FILTER_16_TO_8 = "Linear16ToSRGB8"
40+
3841
3942class MaxQueuePool (object ):
4043 """This Class wraps a concurrent.futures.Executor
@@ -258,11 +261,17 @@ def get_image_metadata_sdk_v1(self, image_no):
258261 self .macro_y = self .get_size (img .IMAGE_DIMENSION_RANGES [1 ]) + 1
259262 return image_metadata
260263
264+ def get_view (self , img ):
265+ view = img .source_view
266+ user_view = pixelengine .PixelEngine .UserView (FILTER_16_TO_8 )
267+ filter_view = view .add_user_view (user_view )
268+ return filter_view
269+
261270 def get_image_metadata_sdk_v2 (self , image_no ):
262271 pe_in = self .pixel_engine ["in" ]
263272 img = pe_in [image_no ]
264273 image_type = self .image_type (image_no )
265- view = img . source_view
274+ view = self . get_view ( img )
266275 image_scale_factor = view .scale
267276
268277 compression_method = None
@@ -371,7 +380,7 @@ def data_envelopes(self, image, resolution):
371380 if self .sdk_v1 :
372381 return pe_in .SourceView ().dataEnvelopes (resolution )
373382 else :
374- return image . source_view .data_envelopes (resolution )
383+ return self . get_view ( image ) .data_envelopes (resolution )
375384
376385 def derivation_description (self ):
377386 pe_in = self .pixel_engine ["in" ]
@@ -385,7 +394,7 @@ def dimension_ranges(self, image, resolution):
385394 if self .sdk_v1 :
386395 return pe_in .SourceView ().dimensionRanges (resolution )
387396 else :
388- return image . source_view .dimension_ranges (resolution )
397+ return self . get_view ( image ) .dimension_ranges (resolution )
389398
390399 def image_data (self , image ):
391400 if self .sdk_v1 :
@@ -405,7 +414,7 @@ def num_derived_levels(self, image):
405414 if self .sdk_v1 :
406415 return pe_in .numLevels ()
407416 else :
408- return image . source_view .num_derived_levels
417+ return self . get_view ( image ) .num_derived_levels
409418
410419 def num_images (self ):
411420 pe_in = self .pixel_engine ["in" ]
@@ -730,7 +739,8 @@ def write_tile(
730739 if self .sdk_v1 :
731740 request_regions = pe_in .SourceView ().requestRegions
732741 else :
733- request_regions = image .source_view .request_regions
742+ request_regions = self .get_view (image ).request_regions
743+
734744 regions = request_regions (
735745 patches [i :i + self .batch_size ], envelopes , True ,
736746 [self .fill_color ] * 3
0 commit comments