mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-08 23:50:48 +03:00
Merge pull request #7209 from Yay295/bytes_tests
This commit is contained in:
commit
016415800a
|
@ -33,36 +33,38 @@ from .helper import (
|
||||||
skip_unless_feature,
|
skip_unless_feature,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# name, pixel size
|
||||||
|
image_modes = (
|
||||||
|
("1", 1),
|
||||||
|
("L", 1),
|
||||||
|
("LA", 4),
|
||||||
|
("La", 4),
|
||||||
|
("P", 1),
|
||||||
|
("PA", 4),
|
||||||
|
("F", 4),
|
||||||
|
("I", 4),
|
||||||
|
("I;16", 2),
|
||||||
|
("I;16L", 2),
|
||||||
|
("I;16B", 2),
|
||||||
|
("I;16N", 2),
|
||||||
|
("RGB", 4),
|
||||||
|
("RGBA", 4),
|
||||||
|
("RGBa", 4),
|
||||||
|
("RGBX", 4),
|
||||||
|
("BGR;15", 2),
|
||||||
|
("BGR;16", 2),
|
||||||
|
("BGR;24", 3),
|
||||||
|
("CMYK", 4),
|
||||||
|
("YCbCr", 4),
|
||||||
|
("HSV", 4),
|
||||||
|
("LAB", 4),
|
||||||
|
)
|
||||||
|
|
||||||
|
image_mode_names = [name for name, _ in image_modes]
|
||||||
|
|
||||||
|
|
||||||
class TestImage:
|
class TestImage:
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize("mode", image_mode_names)
|
||||||
"mode",
|
|
||||||
(
|
|
||||||
"1",
|
|
||||||
"P",
|
|
||||||
"PA",
|
|
||||||
"L",
|
|
||||||
"LA",
|
|
||||||
"La",
|
|
||||||
"F",
|
|
||||||
"I",
|
|
||||||
"I;16",
|
|
||||||
"I;16L",
|
|
||||||
"I;16B",
|
|
||||||
"I;16N",
|
|
||||||
"RGB",
|
|
||||||
"RGBX",
|
|
||||||
"RGBA",
|
|
||||||
"RGBa",
|
|
||||||
"BGR;15",
|
|
||||||
"BGR;16",
|
|
||||||
"BGR;24",
|
|
||||||
"CMYK",
|
|
||||||
"YCbCr",
|
|
||||||
"LAB",
|
|
||||||
"HSV",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
def test_image_modes_success(self, mode: str) -> None:
|
def test_image_modes_success(self, mode: str) -> None:
|
||||||
Image.new(mode, (1, 1))
|
Image.new(mode, (1, 1))
|
||||||
|
|
||||||
|
@ -1042,6 +1044,35 @@ class TestImage:
|
||||||
assert im.fp is None
|
assert im.fp is None
|
||||||
|
|
||||||
|
|
||||||
|
class TestImageBytes:
|
||||||
|
@pytest.mark.parametrize("mode", image_mode_names)
|
||||||
|
def test_roundtrip_bytes_constructor(self, mode: str) -> None:
|
||||||
|
im = hopper(mode)
|
||||||
|
source_bytes = im.tobytes()
|
||||||
|
|
||||||
|
reloaded = Image.frombytes(mode, im.size, source_bytes)
|
||||||
|
assert reloaded.tobytes() == source_bytes
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("mode", image_mode_names)
|
||||||
|
def test_roundtrip_bytes_method(self, mode: str) -> None:
|
||||||
|
im = hopper(mode)
|
||||||
|
source_bytes = im.tobytes()
|
||||||
|
|
||||||
|
reloaded = Image.new(mode, im.size)
|
||||||
|
reloaded.frombytes(source_bytes)
|
||||||
|
assert reloaded.tobytes() == source_bytes
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(("mode", "pixelsize"), image_modes)
|
||||||
|
def test_getdata_putdata(self, mode: str, pixelsize: int) -> None:
|
||||||
|
im = Image.new(mode, (2, 2))
|
||||||
|
source_bytes = bytes(range(im.width * im.height * pixelsize))
|
||||||
|
im.frombytes(source_bytes)
|
||||||
|
|
||||||
|
reloaded = Image.new(mode, im.size)
|
||||||
|
reloaded.putdata(im.getdata())
|
||||||
|
assert_image_equal(im, reloaded)
|
||||||
|
|
||||||
|
|
||||||
class MockEncoder(ImageFile.PyEncoder):
|
class MockEncoder(ImageFile.PyEncoder):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -1578,7 +1578,17 @@ if (PySequence_Check(op)) { \
|
||||||
int bigendian = 0;
|
int bigendian = 0;
|
||||||
if (image->type == IMAGING_TYPE_SPECIAL) {
|
if (image->type == IMAGING_TYPE_SPECIAL) {
|
||||||
// I;16*
|
// I;16*
|
||||||
bigendian = strcmp(image->mode, "I;16B") == 0;
|
if (strcmp(image->mode, "I;16N") == 0) {
|
||||||
|
#ifdef WORDS_BIGENDIAN
|
||||||
|
bigendian = 1;
|
||||||
|
#else
|
||||||
|
bigendian = 0;
|
||||||
|
#endif
|
||||||
|
} else if (strcmp(image->mode, "I;16B") == 0) {
|
||||||
|
bigendian = 1;
|
||||||
|
} else {
|
||||||
|
bigendian = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (i = x = y = 0; i < n; i++) {
|
for (i = x = y = 0; i < n; i++) {
|
||||||
set_value_to_item(seq, i);
|
set_value_to_item(seq, i);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user