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)
|
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():
|
def test_layers():
|
||||||
out = BytesIO()
|
out = BytesIO()
|
||||||
test_card.save(out, "JPEG2000", quality_layers=[100, 50, 10], progression="LRCP")
|
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
|
from .helper import PillowTestCase, convert_to_comparable
|
||||||
|
|
||||||
|
codecs = dir(Image.core)
|
||||||
|
|
||||||
|
|
||||||
class TestImageReduce(PillowTestCase):
|
class TestImageReduce(PillowTestCase):
|
||||||
# There are several internal implementations
|
# There are several internal implementations
|
||||||
|
@ -236,3 +238,10 @@ class TestImageReduce(PillowTestCase):
|
||||||
for factor in self.remarkable_factors:
|
for factor in self.remarkable_factors:
|
||||||
self.compare_reduce_with_reference(im, factor, 0, 0)
|
self.compare_reduce_with_reference(im, factor, 0, 0)
|
||||||
self.compare_reduce_with_box(im, factor)
|
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:
|
if self.size is None or self.mode is None:
|
||||||
raise SyntaxError("unable to determine size/mode")
|
raise SyntaxError("unable to determine size/mode")
|
||||||
|
|
||||||
self.reduce = 0
|
self.load_reduce = 0
|
||||||
self.layers = 0
|
self.layers = 0
|
||||||
|
|
||||||
fd = -1
|
fd = -1
|
||||||
|
@ -200,13 +200,14 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
||||||
"jpeg2k",
|
"jpeg2k",
|
||||||
(0, 0) + self.size,
|
(0, 0) + self.size,
|
||||||
0,
|
0,
|
||||||
(self.codec, self.reduce, self.layers, fd, length),
|
(self.codec, self.load_reduce, self.layers, fd, length),
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
if self.reduce:
|
reduce = self.reduce if not callable(self.reduce) else self.load_reduce
|
||||||
power = 1 << self.reduce
|
if reduce:
|
||||||
|
power = 1 << reduce
|
||||||
adjust = power >> 1
|
adjust = power >> 1
|
||||||
self._size = (
|
self._size = (
|
||||||
int((self.size[0] + adjust) / power),
|
int((self.size[0] + adjust) / power),
|
||||||
|
@ -216,7 +217,7 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
||||||
if self.tile:
|
if self.tile:
|
||||||
# Update the reduce and layers settings
|
# Update the reduce and layers settings
|
||||||
t = self.tile[0]
|
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)]
|
self.tile = [(t[0], (0, 0) + self.size, t[2], t3)]
|
||||||
|
|
||||||
return ImageFile.ImageFile.load(self)
|
return ImageFile.ImageFile.load(self)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user