Skip to content

Commit

Permalink
Fix scaling small images in the multi source with bicubic smoothing
Browse files Browse the repository at this point in the history
We need a bigger border or some areas are zero.  Also, fix corner
computation.
  • Loading branch information
manthey committed Sep 6, 2024
1 parent 80970f0 commit 357c280
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## 1.29.8

### Bug Fixes

- Fix scaling small images in the multi source with bicubic smoothing ([#1627](../../pull/1627))

## 1.29.7

### Improvements
Expand Down
4 changes: 2 additions & 2 deletions sources/multi/large_image_source_multi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1071,7 +1071,7 @@ def _getTransformedTile(self, ts, transform, corners, scale, frame, crop=None):
# we only need every 1/srcscale pixel.
srcscale = int(2 ** math.log2(max(1, srcscale)))
# Pad to reduce edge effects at tile boundaries
border = int(math.ceil(2 * srcscale))
border = int(math.ceil(4 * srcscale))
region = {
'left': int(max(0, minx - border) // srcscale) * srcscale,
'top': int(max(0, miny - border) // srcscale) * srcscale,
Expand Down Expand Up @@ -1119,8 +1119,8 @@ def _getTransformedTile(self, ts, transform, corners, scale, frame, crop=None):
# Recompute where the source corners will land
destcorners = (np.dot(transform, regioncorners.T).T).tolist()
destShape = [
max(max(math.ceil(c[1]) for c in destcorners), srcImage.shape[0]),
max(max(math.ceil(c[0]) for c in destcorners), srcImage.shape[1]),
max(max(math.ceil(c[1]) for c in destcorners), srcImage.shape[0]),
]
if max(0, -x) or max(0, -y):
transform[0][2] -= max(0, -x)
Expand Down

0 comments on commit 357c280

Please sign in to comment.