mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-23 05:34:45 +03:00
Renamed Jpeg2K variable to prevent masking Image reduce method
This commit is contained in:
parent
1e56690439
commit
6f6ed9ef16
|
@ -142,6 +142,13 @@ def test_layers_type(tmp_path):
|
|||
test_card.save(outfile, quality_layers=quality_layers)
|
||||
|
||||
|
||||
def test_load_reduce():
|
||||
with Image.open("Tests/images/test-card-lossless.jp2") as im:
|
||||
im.load_reduce = 2
|
||||
im.load()
|
||||
assert im.size == (160, 120)
|
||||
|
||||
|
||||
def test_layers():
|
||||
out = BytesIO()
|
||||
test_card.save(out, "JPEG2000", quality_layers=[100, 50, 10], progression="LRCP")
|
||||
|
|
|
@ -3,6 +3,8 @@ from PIL import Image, ImageMath, ImageMode
|
|||
|
||||
from .helper import PillowTestCase, convert_to_comparable
|
||||
|
||||
codecs = dir(Image.core)
|
||||
|
||||
|
||||
class TestImageReduce(PillowTestCase):
|
||||
# There are several internal implementations
|
||||
|
@ -236,3 +238,10 @@ class TestImageReduce(PillowTestCase):
|
|||
for factor in self.remarkable_factors:
|
||||
self.compare_reduce_with_reference(im, factor, 0, 0)
|
||||
self.compare_reduce_with_box(im, factor)
|
||||
|
||||
@pytest.mark.skipif(
|
||||
"jpeg2k_decoder" not in codecs, reason="JPEG 2000 support not available"
|
||||
)
|
||||
def test_jpeg2k(self):
|
||||
with Image.open("Tests/images/test-card-lossless.jp2") as im:
|
||||
assert im.reduce(2).size == (320, 240)
|
||||
|
|
|
@ -176,7 +176,7 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
|||
if self.size is None or self.mode is None:
|
||||
raise SyntaxError("unable to determine size/mode")
|
||||
|
||||
self.reduce = 0
|
||||
self.load_reduce = 0
|
||||
self.layers = 0
|
||||
|
||||
fd = -1
|
||||
|
@ -200,13 +200,14 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
|||
"jpeg2k",
|
||||
(0, 0) + self.size,
|
||||
0,
|
||||
(self.codec, self.reduce, self.layers, fd, length),
|
||||
(self.codec, self.load_reduce, self.layers, fd, length),
|
||||
)
|
||||
]
|
||||
|
||||
def load(self):
|
||||
if self.reduce:
|
||||
power = 1 << self.reduce
|
||||
reduce = self.reduce if not callable(self.reduce) else self.load_reduce
|
||||
if reduce:
|
||||
power = 1 << reduce
|
||||
adjust = power >> 1
|
||||
self._size = (
|
||||
int((self.size[0] + adjust) / power),
|
||||
|
@ -216,7 +217,7 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
|||
if self.tile:
|
||||
# Update the reduce and layers settings
|
||||
t = self.tile[0]
|
||||
t3 = (t[3][0], self.reduce, self.layers, t[3][3], t[3][4])
|
||||
t3 = (t[3][0], reduce, self.layers, t[3][3], t[3][4])
|
||||
self.tile = [(t[0], (0, 0) + self.size, t[2], t3)]
|
||||
|
||||
return ImageFile.ImageFile.load(self)
|
||||
|
|
Loading…
Reference in New Issue
Block a user