2013-04-22 00:51:16 +04:00
|
|
|
from tester import *
|
|
|
|
|
|
|
|
from PIL import Image
|
|
|
|
|
|
|
|
codecs = dir(Image.core)
|
|
|
|
|
|
|
|
if "group4_encoder" not in codecs or "group4_decoder" not in codecs:
|
|
|
|
skip("tiff support not available")
|
|
|
|
|
|
|
|
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())
|
|
|
|
|
|
|
|
try:
|
|
|
|
assert_equal(im._compression, 'group4')
|
|
|
|
except:
|
|
|
|
print("No _compression")
|
|
|
|
print (dir(im))
|
|
|
|
|
2013-07-01 02:42:19 +04:00
|
|
|
# can we write it back out, in a different form.
|
2013-04-22 00:51:16 +04:00
|
|
|
out = tempfile("temp.png")
|
|
|
|
assert_no_exception(lambda: im.save(out))
|
|
|
|
|
|
|
|
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_file():
|
|
|
|
"""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_bytesio():
|
|
|
|
"""Testing the stringio loading code path"""
|
|
|
|
from io import BytesIO
|
|
|
|
file = "Tests/images/lena_g4_500.tif"
|
|
|
|
s = BytesIO()
|
|
|
|
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)
|
2013-07-01 02:42:19 +04:00
|
|
|
|
2013-04-22 00:51:16 +04:00
|
|
|
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)
|
|
|
|
|
2013-07-11 09:24:11 +04:00
|
|
|
# see https://github.com/python-imaging/Pillow/issues/279
|
|
|
|
def test_g4_fillorder_eq_png():
|
|
|
|
""" Checking that we're actually getting the data that we expect"""
|
|
|
|
png = Image.open('Tests/images/g4-fillorder-test.png')
|
|
|
|
g4 = Image.open('Tests/images/g4-fillorder-test.tif')
|
|
|
|
|
|
|
|
assert_image_equal(g4, png)
|
|
|
|
|
2013-04-22 00:51:16 +04:00
|
|
|
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 = tempfile("temp.tif")
|
|
|
|
rot = orig.transpose(Image.ROTATE_90)
|
|
|
|
assert_equal(rot.size,(500,500))
|
|
|
|
rot.save(out)
|
|
|
|
|
|
|
|
reread = Image.open(out)
|
|
|
|
assert_equal(reread.size,(500,500))
|
|
|
|
_assert_noerr(reread)
|
|
|
|
assert_image_equal(reread, rot)
|
|
|
|
|
|
|
|
assert_false(orig.tobytes() == reread.tobytes())
|
|
|
|
|
2013-07-02 13:49:43 +04:00
|
|
|
def test_adobe_deflate_tiff():
|
|
|
|
file = "Tests/images/tiff_adobe_deflate.tif"
|
|
|
|
im = Image.open(file)
|
|
|
|
|
|
|
|
assert_equal(im.mode, "RGB")
|
|
|
|
assert_equal(im.size, (278, 374))
|
|
|
|
assert_equal(im.tile[0][:3], ('tiff_adobe_deflate', (0, 0, 278, 374), 0))
|
|
|
|
assert_no_exception(lambda: im.load())
|
2013-07-11 09:24:11 +04:00
|
|
|
|
|
|
|
|