large-image 1.26.3.dev34__tar.gz → 1.26.3.dev38__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {large-image-1.26.3.dev34/large_image.egg-info → large-image-1.26.3.dev38}/PKG-INFO +1 -1
  2. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/base.py +6 -17
  3. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/jupyter.py +5 -7
  4. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/tiledict.py +5 -4
  5. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/utilities.py +15 -2
  6. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38/large_image.egg-info}/PKG-INFO +1 -1
  7. large-image-1.26.3.dev38/large_image.egg-info/requires.txt +143 -0
  8. large-image-1.26.3.dev34/large_image.egg-info/requires.txt +0 -143
  9. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/LICENSE +0 -0
  10. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/NOTICE +0 -0
  11. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/README.rst +0 -0
  12. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/annotations.rst +0 -0
  13. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/caching.rst +0 -0
  14. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/conf.py +0 -0
  15. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/config_options.rst +0 -0
  16. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/development.rst +0 -0
  17. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/example_usage.rst +0 -0
  18. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/girder_annotation_config_options.rst +0 -0
  19. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/girder_config_options.rst +0 -0
  20. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/image_conversion.rst +0 -0
  21. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/index.rst +0 -0
  22. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/large_image_examples.ipynb +0 -0
  23. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/make_docs.sh +0 -0
  24. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/multi_source_specification.rst +0 -0
  25. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/notebooks.rst +0 -0
  26. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/static/custom.css +0 -0
  27. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/tilesource_options.rst +0 -0
  28. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/docs/upgrade.rst +0 -0
  29. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/__init__.py +0 -0
  30. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/cache_util/__init__.py +0 -0
  31. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/cache_util/base.py +0 -0
  32. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/cache_util/cache.py +0 -0
  33. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/cache_util/cachefactory.py +0 -0
  34. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/cache_util/memcache.py +0 -0
  35. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/config.py +0 -0
  36. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/constants.py +0 -0
  37. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/exceptions.py +0 -0
  38. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/__init__.py +0 -0
  39. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/geo.py +0 -0
  40. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image/tilesource/stylefuncs.py +0 -0
  41. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image.egg-info/SOURCES.txt +0 -0
  42. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image.egg-info/dependency_links.txt +0 -0
  43. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image.egg-info/not-zip-safe +0 -0
  44. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/large_image.egg-info/top_level.txt +0 -0
  45. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/setup.cfg +0 -0
  46. {large-image-1.26.3.dev34 → large-image-1.26.3.dev38}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.26.3.dev34
3
+ Version: 1.26.3.dev38
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -285,7 +285,7 @@ class TileSource(IPyLeafletMixin):
285
285
  @property
286
286
  def bandCount(self):
287
287
  if not self._bandCount:
288
- if not self._dtype or str(self._dtype) == 'check':
288
+ if not self._dtype or (isinstance(self._dtype, str) and self._dtype == 'check'):
289
289
  return None
290
290
  return self._bandCount
291
291
 
@@ -1134,20 +1134,6 @@ class TileSource(IPyLeafletMixin):
1134
1134
  entry['hist'] = entry['hist'].astype(float) / entry['samples']
1135
1135
  return results
1136
1136
 
1137
- def _unstyledClassKey(self):
1138
- """
1139
- Create a class key that doesn't use style. If already created, just
1140
- return the created value.
1141
- """
1142
- if not hasattr(self, '_classkey_unstyled'):
1143
- key = self._classkey
1144
- if '__STYLEEND__' in key:
1145
- parts = key.split('__STYLEEND__', 1)
1146
- key = key.split('__STYLESTART__', 1)[0] + parts[1]
1147
- key += '__unstyled'
1148
- self._classkey_unstyled = key
1149
- return self._classkey_unstyled
1150
-
1151
1137
  def _scanForMinMax(self, dtype, frame=None, analysisSize=1024, onlyMinMax=True, **kwargs):
1152
1138
  """
1153
1139
  Scan the image at a lower resolution to find the minimum and maximum
@@ -1597,7 +1583,10 @@ class TileSource(IPyLeafletMixin):
1597
1583
  :returns: a numpy array and a target PIL image mode.
1598
1584
  """
1599
1585
  tile, mode = _imageToNumpy(tile)
1600
- if applyStyle and (getattr(self, 'style', None) or hasattr(self, '_iccprofiles')):
1586
+ # if applyStyle and (getattr(self, 'style', None) or hasattr(self, '_iccprofiles')):
1587
+ if (applyStyle and (getattr(self, 'style', None) or hasattr(self, '_iccprofiles')) and
1588
+ (not getattr(self, 'style', None) or len(self.style) != 1 or
1589
+ self.style.get('icc') is not False)):
1601
1590
  tile = self._applyStyle(tile, getattr(self, 'style', None), x, y, z, frame)
1602
1591
  if tile.shape[0] != self.tileHeight or tile.shape[1] != self.tileWidth:
1603
1592
  extend = np.zeros(
@@ -1641,7 +1630,7 @@ class TileSource(IPyLeafletMixin):
1641
1630
  not isEdge and (not applyStyle or not hasStyle)):
1642
1631
  return tile
1643
1632
 
1644
- if self._dtype is None or str(self._dtype) == 'check':
1633
+ if self._dtype is None or (isinstance(self._dtype, str) and self._dtype == 'check'):
1645
1634
  if tileEncoding == TILE_FORMAT_NUMPY:
1646
1635
  self._dtype = tile.dtype
1647
1636
  self._bandCount = tile.shape[-1] if len(tile.shape) == 3 else 1
@@ -14,6 +14,7 @@ Please note that this webserver will not work with Classic Notebook and will
14
14
  likely lead to crashes. This is only for use in JupyterLab.
15
15
 
16
16
  """
17
+ import importlib.util
17
18
  import json
18
19
  import os
19
20
  import weakref
@@ -21,10 +22,7 @@ import weakref
21
22
  from large_image.exceptions import TileSourceXYZRangeError
22
23
  from large_image.tilesource.utilities import JSONDict
23
24
 
24
- try:
25
- import ipyleaflet
26
- except ImportError: # pragma: no cover
27
- ipyleaflet = None
25
+ ipyleafletPresent = importlib.util.find_spec('ipyleaflet') is not None
28
26
 
29
27
 
30
28
  def launch_tile_server(tile_source, port=0):
@@ -146,7 +144,7 @@ class Map:
146
144
  self._layer = self.make_layer(metadata, url)
147
145
  self._map = self.make_map(metadata)
148
146
 
149
- if ipyleaflet:
147
+ if ipyleafletPresent:
150
148
  def _ipython_display_(self):
151
149
  from IPython.display import display
152
150
 
@@ -382,7 +380,7 @@ class IPyLeafletMixin:
382
380
  def __init__(self, *args, **kwargs):
383
381
  self._jupyter_server_manager = None
384
382
  self._map = Map()
385
- if ipyleaflet:
383
+ if ipyleafletPresent:
386
384
  self.to_map = self._map.to_map
387
385
  self.from_map = self._map.from_map
388
386
 
@@ -411,7 +409,7 @@ class IPyLeafletMixin:
411
409
  return self._map.make_layer(self.metadata, f'{base_url}/{endpoint}')
412
410
 
413
411
  # Only make _ipython_display_ available if ipyleaflet is installed
414
- if ipyleaflet:
412
+ if ipyleafletPresent:
415
413
 
416
414
  def _ipython_display_(self):
417
415
  from IPython.display import display
@@ -173,10 +173,11 @@ class LazyTileDict(dict):
173
173
  else:
174
174
  tileData = self._retileTile()
175
175
 
176
- pilData = _imageToPIL(tileData)
177
-
176
+ pilData = None
178
177
  # resample if needed
179
178
  if self.resample not in (False, None) and self.requestedScale:
179
+ pilData = _imageToPIL(tileData)
180
+
180
181
  self['width'] = max(1, int(
181
182
  pilData.size[0] / self.requestedScale))
182
183
  self['height'] = max(1, int(
@@ -206,7 +207,7 @@ class LazyTileDict(dict):
206
207
  tileData, _ = _imageToNumpy(tileData)
207
208
  tileFormat = TILE_FORMAT_NUMPY
208
209
  elif TILE_FORMAT_PIL in self.format:
209
- tileData = pilData
210
+ tileData = pilData if pilData is not None else _imageToPIL(tileData)
210
211
  tileFormat = TILE_FORMAT_PIL
211
212
  elif TILE_FORMAT_IMAGE in self.format:
212
213
  tileData, mimeType = _encodeImage(
@@ -217,7 +218,7 @@ class LazyTileDict(dict):
217
218
  'Cannot yield tiles in desired format %r' % (
218
219
  self.format, ))
219
220
  else:
220
- tileData = pilData
221
+ tileData = pilData if pilData is not None else _imageToPIL(tileData)
221
222
  tileFormat = TILE_FORMAT_PIL
222
223
 
223
224
  self['tile'] = tileData
@@ -32,6 +32,7 @@ colormap = {
32
32
  'GREEN': '#00ff00',
33
33
  'BLUE': '#0000ff',
34
34
  }
35
+ modesBySize = ['L', 'LA', 'RGB', 'RGBA']
35
36
 
36
37
 
37
38
  class ImageBytes(bytes):
@@ -187,7 +188,7 @@ def _imageToPIL(image, setMode=None):
187
188
  # Fallback for hyperspectral data to just use the first three bands
188
189
  if image.shape[2] > 4:
189
190
  image = image[:, :, :3]
190
- mode = ['L', 'LA', 'RGB', 'RGBA'][image.shape[2] - 1]
191
+ mode = modesBySize[image.shape[2] - 1]
191
192
  if len(image.shape) == 3 and image.shape[2] == 1:
192
193
  image = np.resize(image, image.shape[:2])
193
194
  if image.dtype == np.uint32:
@@ -220,6 +221,17 @@ def _imageToNumpy(image):
220
221
  :param image: input image.
221
222
  :returns: a numpy array and a target PIL image mode.
222
223
  """
224
+ if isinstance(image, np.ndarray) and len(image.shape) == 3 and 1 <= image.shape[2] <= 4:
225
+ return image, modesBySize[image.shape[2] - 1]
226
+ if (simplejpeg and isinstance(image, bytes) and image[:3] == b'\xff\xd8\xff' and
227
+ b'\xff\xc0' in image[:1024]):
228
+ idx = image.index(b'\xff\xc0')
229
+ if image[idx + 9:idx + 10] in {b'\x01', b'\x03'}:
230
+ try:
231
+ image = simplejpeg.decode_jpeg(
232
+ image, colorspace='GRAY' if image[idx + 9:idx + 10] == b'\x01' else 'RGB')
233
+ except Exception:
234
+ pass
223
235
  if not isinstance(image, np.ndarray):
224
236
  if not isinstance(image, PIL.Image.Image):
225
237
  image = PIL.Image.open(io.BytesIO(image))
@@ -232,7 +244,8 @@ def _imageToNumpy(image):
232
244
  image = np.asarray(image)
233
245
  else:
234
246
  if len(image.shape) == 3:
235
- mode = ['L', 'LA', 'RGB', 'RGBA'][(image.shape[2] - 1) if image.shape[2] <= 4 else 3]
247
+ mode = modesBySize[(image.shape[2] - 1) if image.shape[2] <= 4 else 3]
248
+ return image, mode
236
249
  else:
237
250
  mode = 'L'
238
251
  if len(image.shape) == 2:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.26.3.dev34
3
+ Version: 1.26.3.dev38
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -0,0 +1,143 @@
1
+ cachetools
2
+ palettable
3
+ Pillow
4
+ numpy
5
+
6
+ [all]
7
+ large-image-source-openslide>=1.26.3.dev38
8
+ large-image-source-gdal>=1.26.3.dev38
9
+ large-image-source-tiff>=1.26.3.dev38
10
+ large-image-source-nd2>=1.26.3.dev38
11
+ large-image-source-ometiff>=1.26.3.dev38
12
+ psutil>=4.2.0
13
+ pyvips
14
+ large-image-source-openjpeg>=1.26.3.dev38
15
+ large-image-source-dummy>=1.26.3.dev38
16
+ large-image-source-test>=1.26.3.dev38
17
+ large-image-converter>=1.26.3.dev38
18
+ large-image-source-zarr>=1.26.3.dev38
19
+ large-image-source-rasterio>=1.26.3.dev38
20
+ simplejpeg
21
+ large-image-source-vips>=1.26.3.dev38
22
+ large-image-source-rasterio[all]>=1.26.3.dev38
23
+ large-image-source-bioformats>=1.26.3.dev38
24
+ large-image-source-tifffile>=1.26.3.dev38
25
+ matplotlib
26
+ large-image-source-mapnik>=1.26.3.dev38
27
+ large-image-source-multi>=1.26.3.dev38
28
+ large-image-source-pil[all]>=1.26.3.dev38
29
+ large-image-source-deepzoom>=1.26.3.dev38
30
+ large-image-source-pil>=1.26.3.dev38
31
+ large-image-source-dicom>=1.26.3.dev38
32
+
33
+ [all:platform_system != "Windows"]
34
+ pylibmc>=1.5.1
35
+
36
+ [bioformats]
37
+ large-image-source-bioformats>=1.26.3.dev38
38
+
39
+ [colormaps]
40
+ matplotlib
41
+
42
+ [common]
43
+ simplejpeg
44
+ large-image-source-nd2>=1.26.3.dev38
45
+ large-image-source-rasterio[all]>=1.26.3.dev38
46
+ matplotlib
47
+ psutil>=4.2.0
48
+ large-image-source-tifffile>=1.26.3.dev38
49
+ large-image-source-test>=1.26.3.dev38
50
+ large-image-source-multi>=1.26.3.dev38
51
+ large-image-source-pil[all]>=1.26.3.dev38
52
+ large-image-source-deepzoom>=1.26.3.dev38
53
+ large-image-source-dicom>=1.26.3.dev38
54
+ large-image-source-zarr>=1.26.3.dev38
55
+
56
+ [common:platform_system != "Windows"]
57
+ pylibmc>=1.5.1
58
+
59
+ [converter]
60
+ large-image-converter>=1.26.3.dev38
61
+
62
+ [deepzoom]
63
+ large-image-source-deepzoom>=1.26.3.dev38
64
+
65
+ [dicom]
66
+ large-image-source-dicom>=1.26.3.dev38
67
+
68
+ [dummy]
69
+ large-image-source-dummy>=1.26.3.dev38
70
+
71
+ [gdal]
72
+ large-image-source-gdal>=1.26.3.dev38
73
+
74
+ [mapnik]
75
+ large-image-source-mapnik>=1.26.3.dev38
76
+
77
+ [memcached]
78
+
79
+ [memcached:platform_system != "Windows"]
80
+ pylibmc>=1.5.1
81
+
82
+ [multi]
83
+ large-image-source-multi>=1.26.3.dev38
84
+
85
+ [nd2]
86
+ large-image-source-nd2>=1.26.3.dev38
87
+
88
+ [ometiff]
89
+ large-image-source-ometiff>=1.26.3.dev38
90
+
91
+ [openjpeg]
92
+ large-image-source-openjpeg>=1.26.3.dev38
93
+
94
+ [openslide]
95
+ large-image-source-openslide>=1.26.3.dev38
96
+
97
+ [performance]
98
+ psutil>=4.2.0
99
+ simplejpeg
100
+
101
+ [pil]
102
+ large-image-source-pil>=1.26.3.dev38
103
+
104
+ [rasterio]
105
+ large-image-source-rasterio>=1.26.3.dev38
106
+
107
+ [sources]
108
+ large-image-source-openslide>=1.26.3.dev38
109
+ large-image-source-gdal>=1.26.3.dev38
110
+ large-image-source-rasterio>=1.26.3.dev38
111
+ large-image-source-tiff>=1.26.3.dev38
112
+ large-image-source-nd2>=1.26.3.dev38
113
+ large-image-source-vips>=1.26.3.dev38
114
+ large-image-source-ometiff>=1.26.3.dev38
115
+ large-image-source-bioformats>=1.26.3.dev38
116
+ large-image-source-openjpeg>=1.26.3.dev38
117
+ large-image-source-test>=1.26.3.dev38
118
+ large-image-source-tifffile>=1.26.3.dev38
119
+ large-image-source-dummy>=1.26.3.dev38
120
+ large-image-source-mapnik>=1.26.3.dev38
121
+ large-image-source-multi>=1.26.3.dev38
122
+ large-image-source-deepzoom>=1.26.3.dev38
123
+ large-image-source-pil>=1.26.3.dev38
124
+ large-image-source-dicom>=1.26.3.dev38
125
+ large-image-source-zarr>=1.26.3.dev38
126
+
127
+ [test]
128
+ large-image-source-test>=1.26.3.dev38
129
+
130
+ [tiff]
131
+ large-image-source-tiff>=1.26.3.dev38
132
+
133
+ [tifffile]
134
+ large-image-source-tifffile>=1.26.3.dev38
135
+
136
+ [tiledoutput]
137
+ pyvips
138
+
139
+ [vips]
140
+ large-image-source-vips>=1.26.3.dev38
141
+
142
+ [zarr]
143
+ large-image-source-zarr>=1.26.3.dev38
@@ -1,143 +0,0 @@
1
- cachetools
2
- palettable
3
- Pillow
4
- numpy
5
-
6
- [all]
7
- large-image-source-test>=1.26.3.dev34
8
- large-image-converter>=1.26.3.dev34
9
- large-image-source-rasterio[all]>=1.26.3.dev34
10
- large-image-source-multi>=1.26.3.dev34
11
- large-image-source-dicom>=1.26.3.dev34
12
- simplejpeg
13
- matplotlib
14
- large-image-source-pil>=1.26.3.dev34
15
- large-image-source-deepzoom>=1.26.3.dev34
16
- large-image-source-mapnik>=1.26.3.dev34
17
- pyvips
18
- large-image-source-zarr>=1.26.3.dev34
19
- large-image-source-tiff>=1.26.3.dev34
20
- large-image-source-openslide>=1.26.3.dev34
21
- psutil>=4.2.0
22
- large-image-source-bioformats>=1.26.3.dev34
23
- large-image-source-rasterio>=1.26.3.dev34
24
- large-image-source-ometiff>=1.26.3.dev34
25
- large-image-source-tifffile>=1.26.3.dev34
26
- large-image-source-gdal>=1.26.3.dev34
27
- large-image-source-openjpeg>=1.26.3.dev34
28
- large-image-source-dummy>=1.26.3.dev34
29
- large-image-source-pil[all]>=1.26.3.dev34
30
- large-image-source-vips>=1.26.3.dev34
31
- large-image-source-nd2>=1.26.3.dev34
32
-
33
- [all:platform_system != "Windows"]
34
- pylibmc>=1.5.1
35
-
36
- [bioformats]
37
- large-image-source-bioformats>=1.26.3.dev34
38
-
39
- [colormaps]
40
- matplotlib
41
-
42
- [common]
43
- large-image-source-test>=1.26.3.dev34
44
- psutil>=4.2.0
45
- large-image-source-rasterio[all]>=1.26.3.dev34
46
- large-image-source-multi>=1.26.3.dev34
47
- large-image-source-dicom>=1.26.3.dev34
48
- simplejpeg
49
- matplotlib
50
- large-image-source-deepzoom>=1.26.3.dev34
51
- large-image-source-zarr>=1.26.3.dev34
52
- large-image-source-tifffile>=1.26.3.dev34
53
- large-image-source-pil[all]>=1.26.3.dev34
54
- large-image-source-nd2>=1.26.3.dev34
55
-
56
- [common:platform_system != "Windows"]
57
- pylibmc>=1.5.1
58
-
59
- [converter]
60
- large-image-converter>=1.26.3.dev34
61
-
62
- [deepzoom]
63
- large-image-source-deepzoom>=1.26.3.dev34
64
-
65
- [dicom]
66
- large-image-source-dicom>=1.26.3.dev34
67
-
68
- [dummy]
69
- large-image-source-dummy>=1.26.3.dev34
70
-
71
- [gdal]
72
- large-image-source-gdal>=1.26.3.dev34
73
-
74
- [mapnik]
75
- large-image-source-mapnik>=1.26.3.dev34
76
-
77
- [memcached]
78
-
79
- [memcached:platform_system != "Windows"]
80
- pylibmc>=1.5.1
81
-
82
- [multi]
83
- large-image-source-multi>=1.26.3.dev34
84
-
85
- [nd2]
86
- large-image-source-nd2>=1.26.3.dev34
87
-
88
- [ometiff]
89
- large-image-source-ometiff>=1.26.3.dev34
90
-
91
- [openjpeg]
92
- large-image-source-openjpeg>=1.26.3.dev34
93
-
94
- [openslide]
95
- large-image-source-openslide>=1.26.3.dev34
96
-
97
- [performance]
98
- psutil>=4.2.0
99
- simplejpeg
100
-
101
- [pil]
102
- large-image-source-pil>=1.26.3.dev34
103
-
104
- [rasterio]
105
- large-image-source-rasterio>=1.26.3.dev34
106
-
107
- [sources]
108
- large-image-source-test>=1.26.3.dev34
109
- large-image-source-multi>=1.26.3.dev34
110
- large-image-source-dicom>=1.26.3.dev34
111
- large-image-source-bioformats>=1.26.3.dev34
112
- large-image-source-ometiff>=1.26.3.dev34
113
- large-image-source-deepzoom>=1.26.3.dev34
114
- large-image-source-mapnik>=1.26.3.dev34
115
- large-image-source-pil>=1.26.3.dev34
116
- large-image-source-rasterio>=1.26.3.dev34
117
- large-image-source-tifffile>=1.26.3.dev34
118
- large-image-source-zarr>=1.26.3.dev34
119
- large-image-source-tiff>=1.26.3.dev34
120
- large-image-source-gdal>=1.26.3.dev34
121
- large-image-source-openjpeg>=1.26.3.dev34
122
- large-image-source-dummy>=1.26.3.dev34
123
- large-image-source-openslide>=1.26.3.dev34
124
- large-image-source-vips>=1.26.3.dev34
125
- large-image-source-nd2>=1.26.3.dev34
126
-
127
- [test]
128
- large-image-source-test>=1.26.3.dev34
129
-
130
- [tiff]
131
- large-image-source-tiff>=1.26.3.dev34
132
-
133
- [tifffile]
134
- large-image-source-tifffile>=1.26.3.dev34
135
-
136
- [tiledoutput]
137
- pyvips
138
-
139
- [vips]
140
- large-image-source-vips>=1.26.3.dev34
141
-
142
- [zarr]
143
- large-image-source-zarr>=1.26.3.dev34