mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
Merge pull request #64 from kmike/master
Testing improvements and better Python 3.x support
This commit is contained in:
commit
001a1521cb
12
PIL/Image.py
12
PIL/Image.py
|
@ -541,7 +541,11 @@ class Image:
|
|||
if bytes is str:
|
||||
# Declare tostring as alias to tobytes
|
||||
def tostring(self, *args, **kw):
|
||||
warnings.warn('tostring() is deprecated. Please call tobytes() instead.', DeprecationWarning)
|
||||
warnings.warn(
|
||||
'tostring() is deprecated. Please call tobytes() instead.',
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return self.tobytes(*args, **kw)
|
||||
|
||||
##
|
||||
|
@ -1813,7 +1817,11 @@ def frombytes(mode, size, data, decoder_name="raw", *args):
|
|||
if bytes is str:
|
||||
# Declare fromstring as an alias for frombytes
|
||||
def fromstring(*args, **kw):
|
||||
warnings.warn('fromstring() is deprecated. Please call frombytes() instead.', DeprecationWarning)
|
||||
warnings.warn(
|
||||
'fromstring() is deprecated. Please call frombytes() instead.',
|
||||
DeprecationWarning,
|
||||
stacklevel=2
|
||||
)
|
||||
return frombytes(*args, **kw)
|
||||
|
||||
##
|
||||
|
|
|
@ -205,10 +205,10 @@ class ImageFile(Image.Image):
|
|||
break
|
||||
else:
|
||||
raise IndexError(ie)
|
||||
|
||||
|
||||
if not s: # truncated jpeg
|
||||
self.tile = []
|
||||
|
||||
|
||||
if LOAD_TRUNCATED_IMAGES:
|
||||
break
|
||||
else:
|
||||
|
@ -226,7 +226,7 @@ class ImageFile(Image.Image):
|
|||
|
||||
self.fp = None # might be shared
|
||||
|
||||
if (t == 0 or not LOAD_TRUNCATED_IMAGES) and not self.map and e < 0:
|
||||
if (not LOAD_TRUNCATED_IMAGES or t == 0) and not self.map and e < 0:
|
||||
# still raised if decoder fails to return anything
|
||||
raise_ioerror(e)
|
||||
|
||||
|
|
|
@ -269,6 +269,11 @@ class ImageFileDirectory(collections.MutableMapping):
|
|||
def __iter__(self):
|
||||
return itertools.chain(self.tags.__iter__(), self.tagdata.__iter__())
|
||||
|
||||
def items(self):
|
||||
keys = list(self.__iter__())
|
||||
values = [self[key] for key in keys]
|
||||
return zip(keys, values)
|
||||
|
||||
# load primitives
|
||||
|
||||
load_dispatch = {}
|
||||
|
|
|
@ -91,5 +91,6 @@ if skipped:
|
|||
print(skipped)
|
||||
if failure:
|
||||
print("***", tests(failure), "of", (success + failure), "failed.")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print(tests(success), "passed.")
|
||||
|
|
|
@ -12,7 +12,7 @@ assert PIL.Image.VERSION[:3] == '1.1'
|
|||
# Create an image and do stuff with it.
|
||||
im = PIL.Image.new("1", (100, 100))
|
||||
assert (im.mode, im.size) == ('1', (100, 100))
|
||||
assert len(im.tobytes() if py3 else im.tostring()) == 1300
|
||||
assert len(im.tobytes()) == 1300
|
||||
|
||||
# Create images in all remaining major modes.
|
||||
im = PIL.Image.new("L", (100, 100))
|
||||
|
|
|
@ -177,3 +177,8 @@ def test_truncated_jpeg():
|
|||
assert_no_exception(lambda: test(4))
|
||||
assert_no_exception(lambda: test(8))
|
||||
assert_exception(IOError, lambda: test(10))
|
||||
|
||||
def test_exif():
|
||||
im = Image.open("Tests/images/pil_sample_rgb.jpg")
|
||||
info = im._getexif()
|
||||
assert_equal(info[305], 'Adobe Photoshop CS Macintosh')
|
||||
|
|
10
Tests/test_image_frombytes.py
Normal file
10
Tests/test_image_frombytes.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from tester import *
|
||||
|
||||
from PIL import Image
|
||||
|
||||
def test_sanity():
|
||||
im1 = lena()
|
||||
im2 = Image.frombytes(im1.mode, im1.size, im1.tobytes())
|
||||
|
||||
assert_image_equal(im1, im2)
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
from tester import *
|
||||
|
||||
from PIL import Image
|
||||
|
||||
def test_sanity():
|
||||
|
||||
im1 = lena()
|
||||
im2 = None
|
||||
|
||||
if py3:
|
||||
im2 = Image.frombytes(im1.mode, im1.size, im1.tobytes())
|
||||
else:
|
||||
im2 = Image.fromstring(im1.mode, im1.size, im1.tostring())
|
||||
|
||||
assert_image_equal(im1, im2)
|
||||
|
|
@ -3,5 +3,5 @@ from tester import *
|
|||
from PIL import Image
|
||||
|
||||
def test_sanity():
|
||||
data = lena().tobytes() if py3 else lena().tostring()
|
||||
data = lena().tobytes()
|
||||
assert_true(isinstance(data, bytes))
|
|
@ -16,7 +16,7 @@ def test_pack():
|
|||
if py3:
|
||||
return list(im.tobytes("raw", rawmode))
|
||||
else:
|
||||
return [ord(c) for c in im.tostring("raw", rawmode)]
|
||||
return [ord(c) for c in im.tobytes("raw", rawmode)]
|
||||
|
||||
assert_equal(pack("1", "1"), [128])
|
||||
assert_equal(pack("1", "1;I"), [0])
|
||||
|
@ -53,10 +53,10 @@ def test_unpack():
|
|||
|
||||
if py3:
|
||||
data = bytes(range(1,bytes_+1))
|
||||
im = Image.frombytes(mode, (1, 1), data, "raw", rawmode, 0, 1)
|
||||
else:
|
||||
data = ''.join(chr(i) for i in range(1,bytes_+1))
|
||||
im = Image.fromstring(mode, (1, 1), data, "raw", rawmode, 0, 1)
|
||||
|
||||
im = Image.frombytes(mode, (1, 1), data, "raw", rawmode, 0, 1)
|
||||
|
||||
return im.getpixel((0, 0))
|
||||
|
||||
|
@ -67,7 +67,7 @@ def test_unpack():
|
|||
if py3:
|
||||
im = Image.frombytes(mode, (8, 1), bytes([value]), "raw", rawmode, 0, 1)
|
||||
else:
|
||||
im = Image.fromstring(mode, (8, 1), chr(value), "raw", rawmode, 0, 1)
|
||||
im = Image.frombytes(mode, (8, 1), chr(value), "raw", rawmode, 0, 1)
|
||||
|
||||
return tuple(im.getdata())
|
||||
|
||||
|
|
|
@ -79,18 +79,15 @@ def test_basic():
|
|||
basic("I")
|
||||
|
||||
|
||||
def test_tostring():
|
||||
def test_tobytes():
|
||||
|
||||
def tostring(mode):
|
||||
if py3:
|
||||
return Image.new(mode, (1, 1), 1).tobytes()
|
||||
else:
|
||||
return Image.new(mode, (1, 1), 1).tostring()
|
||||
def tobytes(mode):
|
||||
return Image.new(mode, (1, 1), 1).tobytes()
|
||||
|
||||
assert_equal(tostring("L"), b"\x01")
|
||||
assert_equal(tostring("I;16"), b"\x01\x00")
|
||||
assert_equal(tostring("I;16B"), b"\x00\x01")
|
||||
assert_equal(tostring("I"), b"\x01\x00\x00\x00")
|
||||
assert_equal(tobytes("L"), b"\x01")
|
||||
assert_equal(tobytes("I;16"), b"\x01\x00")
|
||||
assert_equal(tobytes("I;16B"), b"\x00\x01")
|
||||
assert_equal(tobytes("I"), b"\x01\x00\x00\x00")
|
||||
|
||||
|
||||
def test_convert():
|
||||
|
|
|
@ -144,12 +144,9 @@ def assert_image_equal(a, b, msg=None):
|
|||
failure(msg or "got mode %r, expected %r" % (a.mode, b.mode))
|
||||
elif a.size != b.size:
|
||||
failure(msg or "got size %r, expected %r" % (a.size, b.size))
|
||||
elif py3 and a.tobytes() != b.tobytes():
|
||||
elif a.tobytes() != b.tobytes():
|
||||
failure(msg or "got different content")
|
||||
# generate better diff?
|
||||
elif not py3 and a.tostring() != b.tostring():
|
||||
failure(msg or "got different content")
|
||||
# same complaint?
|
||||
else:
|
||||
success()
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user