Pillow/Tests/test_image_transform.py

59 lines
1.9 KiB
Python
Raw Normal View History

from tester import *
from PIL import Image
2013-10-01 08:57:19 +04:00
def test_extent():
im = lena('RGB')
(w,h) = im.size
transformed = im.transform(im.size, Image.EXTENT,
(0,0,
w/2,h/2), # ul -> lr
Image.BILINEAR)
scaled = im.resize((w*2, h*2), Image.BILINEAR).crop((0,0,w,h))
assert_image_similar(transformed, scaled, 10) # undone -- precision?
2013-10-01 08:21:53 +04:00
def test_quad():
# one simple quad transform, equivalent to scale & crop upper left quad
im = lena('RGB')
(w,h) = im.size
transformed = im.transform(im.size, Image.QUAD,
(0,0,0,h/2,
w/2,h/2,w/2,0), # ul -> ccw around quad
Image.BILINEAR)
scaled = im.resize((w*2, h*2), Image.BILINEAR).crop((0,0,w,h))
2013-10-01 09:01:23 +04:00
assert_image_equal(transformed, scaled)
def test_mesh():
# this should be a checkerboard of halfsized lenas in ul, lr
im = lena('RGBA')
(w,h) = im.size
transformed = im.transform(im.size, Image.MESH,
[((0,0,w/2,h/2), # box
(0,0,0,h,
w,h,w,0)), # ul -> ccw around quad
((w/2,h/2,w,h), # box
(0,0,0,h,
w,h,w,0))], # ul -> ccw around quad
Image.BILINEAR)
scaled = im.resize((w/2, h/2), Image.BILINEAR)
checker = Image.new('RGBA', im.size)
checker.paste(scaled, (0,0))
checker.paste(scaled, (w/2,h/2))
assert_image_equal(transformed, checker)
# now, check to see that the extra area is (0,0,0,0)
blank = Image.new('RGBA', (w/2,h/2), (0,0,0,0))
assert_image_equal(blank, transformed.crop((w/2,0,w,h/2)))
assert_image_equal(blank, transformed.crop((0,h/2,w/2,h)))