large-image-source-vips 1.30.7.dev2__tar.gz → 1.30.7.dev4__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 (14) hide show
  1. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/PKG-INFO +2 -2
  2. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips/__init__.py +16 -4
  3. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips.egg-info/PKG-INFO +2 -2
  4. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips.egg-info/requires.txt +1 -1
  5. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/LICENSE +0 -0
  6. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/README.rst +0 -0
  7. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips/girder_source.py +0 -0
  8. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips.egg-info/SOURCES.txt +0 -0
  9. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips.egg-info/dependency_links.txt +0 -0
  10. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips.egg-info/entry_points.txt +0 -0
  11. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/large_image_source_vips.egg-info/top_level.txt +0 -0
  12. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/pyproject.toml +0 -0
  13. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/setup.cfg +0 -0
  14. {large_image_source_vips-1.30.7.dev2 → large_image_source_vips-1.30.7.dev4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-vips
3
- Version: 1.30.7.dev2
3
+ Version: 1.30.7.dev4
4
4
  Summary: A libvips tilesource for large_image.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Requires-Python: >=3.8
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
- Requires-Dist: large-image>=1.30.7.dev2
22
+ Requires-Dist: large-image>=1.30.7.dev4
23
23
  Requires-Dist: numpy
24
24
  Requires-Dist: packaging
25
25
  Requires-Dist: pyvips
@@ -60,7 +60,7 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
60
60
 
61
61
  _tileSize = 256
62
62
 
63
- def __init__(self, path, **kwargs):
63
+ def __init__(self, path, **kwargs): # noqa
64
64
  """
65
65
  Initialize the tile class. See the base class for other available
66
66
  parameters.
@@ -70,6 +70,7 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
70
70
  super().__init__(path, **kwargs)
71
71
  self.addKnownExtensions()
72
72
 
73
+ self._suffix = ''
73
74
  if str(path).startswith(NEW_IMAGE_PATH_FLAG):
74
75
  self._initNew(**kwargs)
75
76
  return
@@ -85,6 +86,11 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
85
86
  raise TileSourceFileNotFoundError(self._largeImagePath) from None
86
87
  msg = 'File cannot be opened via pyvips'
87
88
  raise TileSourceError(msg)
89
+ # Ask pdfs to render at a higher resolution
90
+ if ('vips-loader' in self._image.get_fields() and
91
+ self._image.get('vips-loader') in {'pdfload'}):
92
+ self._suffix = ',dpi=144'
93
+ self._image = pyvips.Image.new_from_file(self._largeImagePath + '[dpi=300]')
88
94
  self.sizeX = self._image.width
89
95
  self.sizeY = self._image.height
90
96
  self.tileWidth = self.tileHeight = self._tileSize
@@ -93,7 +99,7 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
93
99
  pages = self._image.get('n-pages')
94
100
  self._frames = [0]
95
101
  for page in range(1, pages):
96
- subInputPath = self._largeImagePath + '[page=%d]' % page
102
+ subInputPath = self._largeImagePath + f'[page={page}{self._suffix}]'
97
103
  with _newFromFileLock:
98
104
  try:
99
105
  subImage = pyvips.Image.new_from_file(subInputPath)
@@ -102,6 +108,10 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
102
108
  if subImage.width == self.sizeX and subImage.height == self.sizeY:
103
109
  self._frames.append(page)
104
110
  continue
111
+ if (self.sizeX - 16 < subImage.width <= self.sizeX and
112
+ self.sizeY - 16 < subImage.height <= self.sizeY):
113
+ self._frames.append(page)
114
+ continue
105
115
  if subImage.width * subImage.height < self.sizeX * self.sizeY:
106
116
  continue
107
117
  self._frames = [page]
@@ -197,7 +207,7 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
197
207
  if frame > 0:
198
208
  with self._frameLock:
199
209
  if frame not in self._recentFrames:
200
- subpath = self._largeImagePath + '[page=%d]' % self._frames[frame]
210
+ subpath = self._largeImagePath + f'[page={self._frames[frame]}{self._suffix}]'
201
211
  with _newFromFileLock:
202
212
  img = pyvips.Image.new_from_file(subpath)
203
213
  self._recentFrames[frame] = img
@@ -223,7 +233,9 @@ class VipsFileTileSource(FileTileSource, metaclass=LruCacheMetaclass):
223
233
  self._xyzInRange(x, y, z, frame, len(self._frames))
224
234
  img = self._getFrameImage(frame)
225
235
  x0, y0, x1, y1, step = self._xyzToCorners(x, y, z)
226
- tileimg = img.crop(x0, y0, x1 - x0, y1 - y0)
236
+ tileimg = img.crop(min(x0, img.width), min(y0, img.height),
237
+ min(x1, img.width) - min(x0, img.width),
238
+ min(y1, img.height) - min(y0, img.height))
227
239
  try:
228
240
  if step != 1:
229
241
  tileimg = tileimg.resize(1.0 / step, kernel=pyvips.enums.Kernel.NEAREST, gap=0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image-source-vips
3
- Version: 1.30.7.dev2
3
+ Version: 1.30.7.dev4
4
4
  Summary: A libvips tilesource for large_image.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Requires-Python: >=3.8
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
- Requires-Dist: large-image>=1.30.7.dev2
22
+ Requires-Dist: large-image>=1.30.7.dev4
23
23
  Requires-Dist: numpy
24
24
  Requires-Dist: packaging
25
25
  Requires-Dist: pyvips
@@ -1,4 +1,4 @@
1
- large-image>=1.30.7.dev2
1
+ large-image>=1.30.7.dev4
2
2
  numpy
3
3
  packaging
4
4
  pyvips