mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 09:56:17 +03:00
152 lines
3.8 KiB
Python
152 lines
3.8 KiB
Python
from tester import *
|
|
|
|
from PIL import Image
|
|
|
|
import StringIO
|
|
import random
|
|
|
|
def test_sanity():
|
|
|
|
file = tempfile("temp.tif")
|
|
|
|
lena("RGB").save(file)
|
|
|
|
im = Image.open(file)
|
|
im.load()
|
|
assert_equal(im.mode, "RGB")
|
|
assert_equal(im.size, (128, 128))
|
|
assert_equal(im.format, "TIFF")
|
|
|
|
lena("1").save(file)
|
|
im = Image.open(file)
|
|
|
|
lena("L").save(file)
|
|
im = Image.open(file)
|
|
|
|
lena("P").save(file)
|
|
im = Image.open(file)
|
|
|
|
lena("RGB").save(file)
|
|
im = Image.open(file)
|
|
|
|
lena("I").save(file)
|
|
im = Image.open(file)
|
|
|
|
def test_mac_tiff():
|
|
# Read RGBa images from Mac OS X [@PIL136]
|
|
|
|
file = "Tests/images/pil136.tiff"
|
|
im = Image.open(file)
|
|
|
|
assert_equal(im.mode, "RGBA")
|
|
assert_equal(im.size, (55, 43))
|
|
assert_equal(im.tile, [('raw', (0, 0, 55, 43), 8, ('RGBa', 0, 1))])
|
|
assert_no_exception(lambda: im.load())
|
|
|
|
def test_gimp_tiff():
|
|
# Read TIFF JPEG images from GIMP [@PIL168]
|
|
|
|
file = "Tests/images/pil168.tif"
|
|
im = Image.open(file)
|
|
|
|
assert_equal(im.mode, "RGB")
|
|
assert_equal(im.size, (256, 256))
|
|
assert_equal(im.tile, [
|
|
('jpeg', (0, 0, 256, 64), 8, ('RGB', '')),
|
|
('jpeg', (0, 64, 256, 128), 1215, ('RGB', '')),
|
|
('jpeg', (0, 128, 256, 192), 2550, ('RGB', '')),
|
|
('jpeg', (0, 192, 256, 256), 3890, ('RGB', '')),
|
|
])
|
|
assert_no_exception(lambda: im.load())
|
|
|
|
def _assert_noerr(im):
|
|
"""Helper tests that assert basic sanity about the g4 tiff reading"""
|
|
#1 bit
|
|
assert_equal(im.mode, "1")
|
|
# Does the data actually load
|
|
assert_no_exception(lambda: im.load())
|
|
assert_no_exception(lambda: im.getdata())
|
|
|
|
# can we write it back out, in a different form.
|
|
out = tempfile("temp.png")
|
|
assert_no_exception(lambda: im.save(out))
|
|
|
|
def _compare_images(img, ref):
|
|
"""Compares the image to the reference, using 1000 sampled points"""
|
|
|
|
imgdata = img.getdata()
|
|
refdata = ref.getdata()
|
|
assert_equal(len(imgdata), len(refdata))
|
|
randitems = random.sample(range(len(imgdata)), 1000)
|
|
assert_equal([imgdata[i] for i in randitems],
|
|
[refdata[i] for i in randitems])
|
|
|
|
def test_g4_tiff():
|
|
"""Test the ordinary file path load path"""
|
|
|
|
file = "Tests/images/lena_g4_500.tif"
|
|
im = Image.open(file)
|
|
|
|
assert_equal(im.size, (500,500))
|
|
_assert_noerr(im)
|
|
|
|
def test_g4_large():
|
|
file = "Tests/images/pport_g4.tif"
|
|
im = Image.open(file)
|
|
_assert_noerr(im)
|
|
|
|
def test_g4_tiff_string():
|
|
"""Testing the string load path"""
|
|
|
|
file = "Tests/images/lena_g4_500.tif"
|
|
with open(file,'rb') as f:
|
|
im = Image.open(f)
|
|
|
|
assert_equal(im.size, (500,500))
|
|
_assert_noerr(im)
|
|
|
|
def test_g4_tiff_stringio():
|
|
"""Testing the stringio loading code path"""
|
|
|
|
file = "Tests/images/lena_g4_500.tif"
|
|
s = StringIO.StringIO()
|
|
with open(file,'rb') as f:
|
|
s.write(f.read())
|
|
s.seek(0)
|
|
im = Image.open(s)
|
|
|
|
assert_equal(im.size, (500,500))
|
|
_assert_noerr(im)
|
|
|
|
def xtest_g4_tiff_fail(): # UNDONE fails badly, unknown reason
|
|
"""The 128x128 lena image fails for some reason. Investigating"""
|
|
|
|
Image.DEBUG = True
|
|
file = "Tests/images/lena_g4.tif"
|
|
im = Image.open(file)
|
|
|
|
assert_equal(im.size, (128,128))
|
|
_assert_noerr(im)
|
|
Image.DEBUG = False
|
|
|
|
def test_g4_eq_png():
|
|
""" Checking that we're actually getting the data that we expect"""
|
|
png = Image.open('Tests/images/lena_bw_500.png')
|
|
g4 = Image.open('Tests/images/lena_g4_500.tif')
|
|
|
|
assert_image_equal(g4, png)
|
|
|
|
def test_g4_write():
|
|
"""Checking to see that the saved image is the same as what we wrote"""
|
|
file = "Tests/images/lena_g4_500.tif"
|
|
orig = Image.open(file)
|
|
|
|
out = "temp.tif"
|
|
rot = orig.transpose(Image.ROTATE_90)
|
|
rot.save(out)
|
|
|
|
reread = Image.open(out)
|
|
assert_image_equal(reread, rot)
|
|
|
|
assert_false(orig.tobytes() == reread.tobytes())
|