mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-26 17:24:31 +03:00
Convert test_optimize_correctness to use parametrize
This commit is contained in:
parent
a5e046fb49
commit
e24dd745f7
|
@ -158,39 +158,42 @@ def test_optimize():
|
||||||
assert test_bilevel(1) == 799
|
assert test_bilevel(1) == 799
|
||||||
|
|
||||||
|
|
||||||
def test_optimize_correctness():
|
@pytest.mark.parametrize(
|
||||||
# 256 color Palette image, posterize to > 128 and < 128 levels
|
"colors, size, expected_palette_length",
|
||||||
# Size bigger and smaller than 512x512
|
(
|
||||||
|
# These do optimize the palette
|
||||||
|
(256, 511, 256),
|
||||||
|
(255, 511, 255),
|
||||||
|
(129, 511, 129),
|
||||||
|
(128, 511, 128),
|
||||||
|
(64, 511, 64),
|
||||||
|
(4, 511, 4),
|
||||||
|
# These don't optimize the palette
|
||||||
|
(128, 513, 256),
|
||||||
|
(64, 513, 256),
|
||||||
|
(4, 513, 256),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
def test_optimize_correctness(colors, size, expected_palette_length):
|
||||||
|
# 256 color Palette image, posterize to > 128 and < 128 levels.
|
||||||
|
# Size bigger and smaller than 512x512.
|
||||||
# Check the palette for number of colors allocated.
|
# Check the palette for number of colors allocated.
|
||||||
# Check for correctness after conversion back to RGB
|
# Check for correctness after conversion back to RGB.
|
||||||
def check(colors, size, expected_palette_length):
|
|
||||||
# make an image with empty colors in the start of the palette range
|
|
||||||
im = Image.frombytes(
|
|
||||||
"P", (colors, colors), bytes(range(256 - colors, 256)) * colors
|
|
||||||
)
|
|
||||||
im = im.resize((size, size))
|
|
||||||
outfile = BytesIO()
|
|
||||||
im.save(outfile, "GIF")
|
|
||||||
outfile.seek(0)
|
|
||||||
with Image.open(outfile) as reloaded:
|
|
||||||
# check palette length
|
|
||||||
palette_length = max(i + 1 for i, v in enumerate(reloaded.histogram()) if v)
|
|
||||||
assert expected_palette_length == palette_length
|
|
||||||
|
|
||||||
assert_image_equal(im.convert("RGB"), reloaded.convert("RGB"))
|
# make an image with empty colors in the start of the palette range
|
||||||
|
im = Image.frombytes(
|
||||||
|
"P", (colors, colors), bytes(range(256 - colors, 256)) * colors
|
||||||
|
)
|
||||||
|
im = im.resize((size, size))
|
||||||
|
outfile = BytesIO()
|
||||||
|
im.save(outfile, "GIF")
|
||||||
|
outfile.seek(0)
|
||||||
|
with Image.open(outfile) as reloaded:
|
||||||
|
# check palette length
|
||||||
|
palette_length = max(i + 1 for i, v in enumerate(reloaded.histogram()) if v)
|
||||||
|
assert expected_palette_length == palette_length
|
||||||
|
|
||||||
# These do optimize the palette
|
assert_image_equal(im.convert("RGB"), reloaded.convert("RGB"))
|
||||||
check(256, 511, 256)
|
|
||||||
check(255, 511, 255)
|
|
||||||
check(129, 511, 129)
|
|
||||||
check(128, 511, 128)
|
|
||||||
check(64, 511, 64)
|
|
||||||
check(4, 511, 4)
|
|
||||||
|
|
||||||
# These don't optimize the palette
|
|
||||||
check(128, 513, 256)
|
|
||||||
check(64, 513, 256)
|
|
||||||
check(4, 513, 256)
|
|
||||||
|
|
||||||
|
|
||||||
def test_optimize_full_l():
|
def test_optimize_full_l():
|
||||||
|
|
Loading…
Reference in New Issue
Block a user