large-image-source-openjpeg 1.27.5.dev6__py3-none-any.whl → 1.30.7.dev10__py3-none-any.whl
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.
- large_image_source_openjpeg/__init__.py +29 -6
- {large_image_source_openjpeg-1.27.5.dev6.dist-info → large_image_source_openjpeg-1.30.7.dev10.dist-info}/METADATA +19 -5
- large_image_source_openjpeg-1.30.7.dev10.dist-info/RECORD +8 -0
- {large_image_source_openjpeg-1.27.5.dev6.dist-info → large_image_source_openjpeg-1.30.7.dev10.dist-info}/WHEEL +1 -1
- large_image_source_openjpeg-1.27.5.dev6.dist-info/RECORD +0 -8
- {large_image_source_openjpeg-1.27.5.dev6.dist-info → large_image_source_openjpeg-1.30.7.dev10.dist-info}/LICENSE +0 -0
- {large_image_source_openjpeg-1.27.5.dev6.dist-info → large_image_source_openjpeg-1.30.7.dev10.dist-info}/entry_points.txt +0 -0
- {large_image_source_openjpeg-1.27.5.dev6.dist-info → large_image_source_openjpeg-1.30.7.dev10.dist-info}/top_level.txt +0 -0
@@ -25,7 +25,6 @@ from importlib.metadata import PackageNotFoundError
|
|
25
25
|
from importlib.metadata import version as _importlib_version
|
26
26
|
from xml.etree import ElementTree
|
27
27
|
|
28
|
-
import glymur
|
29
28
|
import PIL.Image
|
30
29
|
|
31
30
|
import large_image
|
@@ -41,6 +40,23 @@ except PackageNotFoundError:
|
|
41
40
|
# package is not installed
|
42
41
|
pass
|
43
42
|
|
43
|
+
glymur = None
|
44
|
+
|
45
|
+
|
46
|
+
def _lazyImport():
|
47
|
+
"""
|
48
|
+
Import the glymur module. This is done when needed rather than in the module
|
49
|
+
initialization because it is slow.
|
50
|
+
"""
|
51
|
+
global glymur
|
52
|
+
|
53
|
+
if glymur is None:
|
54
|
+
try:
|
55
|
+
import glymur
|
56
|
+
except ImportError:
|
57
|
+
msg = 'glymur module not found.'
|
58
|
+
raise TileSourceError(msg)
|
59
|
+
|
44
60
|
|
45
61
|
warnings.filterwarnings('ignore', category=UserWarning, module='glymur')
|
46
62
|
|
@@ -57,11 +73,13 @@ class OpenjpegFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
57
73
|
None: SourcePriority.MEDIUM,
|
58
74
|
'jp2': SourcePriority.PREFERRED,
|
59
75
|
'jpf': SourcePriority.PREFERRED,
|
76
|
+
'j2c': SourcePriority.PREFERRED,
|
60
77
|
'j2k': SourcePriority.PREFERRED,
|
61
78
|
'jpx': SourcePriority.PREFERRED,
|
62
79
|
}
|
63
80
|
mimeTypes = {
|
64
81
|
None: SourcePriority.FALLBACK,
|
82
|
+
'image/j2c': SourcePriority.PREFERRED,
|
65
83
|
'image/jp2': SourcePriority.PREFERRED,
|
66
84
|
'image/jpx': SourcePriority.PREFERRED,
|
67
85
|
}
|
@@ -88,6 +106,7 @@ class OpenjpegFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
88
106
|
"""
|
89
107
|
super().__init__(path, **kwargs)
|
90
108
|
|
109
|
+
_lazyImport()
|
91
110
|
self._largeImagePath = str(self._getLargeImagePath())
|
92
111
|
self._pixelInfo = {}
|
93
112
|
try:
|
@@ -97,14 +116,14 @@ class OpenjpegFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
97
116
|
raise FileNotFoundError
|
98
117
|
msg = 'File cannot be opened via Glymur and OpenJPEG (no shape).'
|
99
118
|
raise TileSourceError(msg)
|
100
|
-
except (glymur.jp2box.InvalidJp2kError, struct.error):
|
119
|
+
except (glymur.jp2box.InvalidJp2kError, struct.error, IndexError):
|
101
120
|
msg = 'File cannot be opened via Glymur and OpenJPEG.'
|
102
121
|
raise TileSourceError(msg)
|
103
122
|
except FileNotFoundError:
|
104
123
|
if not os.path.isfile(self._largeImagePath):
|
105
124
|
raise TileSourceFileNotFoundError(self._largeImagePath) from None
|
106
125
|
raise
|
107
|
-
glymur.set_option('lib.num_threads', large_image.
|
126
|
+
glymur.set_option('lib.num_threads', large_image.config.cpu_count())
|
108
127
|
self._openjpegHandles = queue.LifoQueue()
|
109
128
|
for _ in range(self._maxOpenHandles - 1):
|
110
129
|
self._openjpegHandles.put(None)
|
@@ -113,7 +132,11 @@ class OpenjpegFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
113
132
|
self.sizeY, self.sizeX = self._openjpeg.shape[:2]
|
114
133
|
except IndexError as exc:
|
115
134
|
raise TileSourceError('File cannot be opened via Glymur and OpenJPEG: %r' % exc)
|
116
|
-
|
135
|
+
try:
|
136
|
+
self.levels = int(self._openjpeg.codestream.segment[2].num_res) + 1
|
137
|
+
except Exception:
|
138
|
+
msg = 'File cannot be opened via Glymur and OpenJPEG.'
|
139
|
+
raise TileSourceError(msg)
|
117
140
|
self._minlevel = 0
|
118
141
|
self.tileWidth = self.tileHeight = 2 ** int(math.ceil(max(
|
119
142
|
math.log(float(self.sizeX)) / math.log(2) - self.levels + 1,
|
@@ -228,7 +251,7 @@ class OpenjpegFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
228
251
|
|
229
252
|
def _readbox(self, box):
|
230
253
|
if box.length > 16 * 1024 * 1024:
|
231
|
-
return
|
254
|
+
return None
|
232
255
|
try:
|
233
256
|
fp = builtins.open(self._largeImagePath, 'rb')
|
234
257
|
headerLength = 16
|
@@ -256,7 +279,7 @@ class OpenjpegFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
|
|
256
279
|
x0, y0, x1, y1, step = self._xyzToCorners(x, y, z)
|
257
280
|
scale = None
|
258
281
|
if self._minlevel - z > self._maxSkippedLevels:
|
259
|
-
tile = self._getTileFromEmptyLevel(x, y, z, **kwargs)
|
282
|
+
tile, _format = self._getTileFromEmptyLevel(x, y, z, **kwargs)
|
260
283
|
tile = _imageToNumpy(tile)[0]
|
261
284
|
else:
|
262
285
|
if z < self._minlevel:
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: large-image-source-openjpeg
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.30.7.dev10
|
4
4
|
Summary: An Openjpeg tilesource for large_image.
|
5
5
|
Home-page: https://github.com/girder/large_image
|
6
6
|
Author: Kitware, Inc.
|
@@ -15,12 +15,26 @@ Classifier: Programming Language :: Python :: 3.9
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
18
19
|
Requires-Python: >=3.8
|
20
|
+
Description-Content-Type: text/x-rst
|
19
21
|
License-File: LICENSE
|
20
|
-
Requires-Dist: large-image
|
21
|
-
Requires-Dist: glymur
|
22
|
+
Requires-Dist: large-image>=1.30.7.dev10
|
23
|
+
Requires-Dist: glymur>=0.8.18
|
22
24
|
Provides-Extra: girder
|
23
|
-
Requires-Dist: girder-large-image
|
25
|
+
Requires-Dist: girder-large-image>=1.30.7.dev10; extra == "girder"
|
26
|
+
Dynamic: author
|
27
|
+
Dynamic: author-email
|
28
|
+
Dynamic: classifier
|
29
|
+
Dynamic: description
|
30
|
+
Dynamic: description-content-type
|
31
|
+
Dynamic: home-page
|
32
|
+
Dynamic: keywords
|
33
|
+
Dynamic: license
|
34
|
+
Dynamic: provides-extra
|
35
|
+
Dynamic: requires-dist
|
36
|
+
Dynamic: requires-python
|
37
|
+
Dynamic: summary
|
24
38
|
|
25
39
|
An Openjpeg tilesource for large_image.
|
26
40
|
|
@@ -0,0 +1,8 @@
|
|
1
|
+
large_image_source_openjpeg/__init__.py,sha256=Dv7pT3AieJqrAVP95aOkC8chDwoXc5z5Kx4Fp1rJIJI,11712
|
2
|
+
large_image_source_openjpeg/girder_source.py,sha256=Ve15utmsZ_CJrDXIAQD2ea2yHybE1vuWbbPJMeXQCMI,1246
|
3
|
+
large_image_source_openjpeg-1.30.7.dev10.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
4
|
+
large_image_source_openjpeg-1.30.7.dev10.dist-info/METADATA,sha256=rqf5PDYx5gsfkQNNK07aGJpi7EhSKezu6Df-idvb9PA,1361
|
5
|
+
large_image_source_openjpeg-1.30.7.dev10.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
6
|
+
large_image_source_openjpeg-1.30.7.dev10.dist-info/entry_points.txt,sha256=lTM4P2JqjANt_gPtcbMYTJVCmfPts_VxB8bQyfhryjI,190
|
7
|
+
large_image_source_openjpeg-1.30.7.dev10.dist-info/top_level.txt,sha256=y6bw5gBWfdaFWXtjiCH0vaHRtP8WNBhq8ugIKnwzEL0,28
|
8
|
+
large_image_source_openjpeg-1.30.7.dev10.dist-info/RECORD,,
|
@@ -1,8 +0,0 @@
|
|
1
|
-
large_image_source_openjpeg/__init__.py,sha256=5JzJZcosfZsYLybE2QhlcTe2w3s8qI5Cng6ibx8oHRk,11089
|
2
|
-
large_image_source_openjpeg/girder_source.py,sha256=Ve15utmsZ_CJrDXIAQD2ea2yHybE1vuWbbPJMeXQCMI,1246
|
3
|
-
large_image_source_openjpeg-1.27.5.dev6.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
4
|
-
large_image_source_openjpeg-1.27.5.dev6.dist-info/METADATA,sha256=64rfF5UqmwM-URmSwRE40AM48Lnv_jRjIYMzvvtaYeM,1018
|
5
|
-
large_image_source_openjpeg-1.27.5.dev6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
6
|
-
large_image_source_openjpeg-1.27.5.dev6.dist-info/entry_points.txt,sha256=lTM4P2JqjANt_gPtcbMYTJVCmfPts_VxB8bQyfhryjI,190
|
7
|
-
large_image_source_openjpeg-1.27.5.dev6.dist-info/top_level.txt,sha256=y6bw5gBWfdaFWXtjiCH0vaHRtP8WNBhq8ugIKnwzEL0,28
|
8
|
-
large_image_source_openjpeg-1.27.5.dev6.dist-info/RECORD,,
|
File without changes
|
File without changes
|