mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
100 lines
2.8 KiB
Python
100 lines
2.8 KiB
Python
from tester import *
|
|
|
|
try:
|
|
import cffi
|
|
except:
|
|
skip()
|
|
|
|
from PIL import Image, PyAccess
|
|
|
|
import test_image_putpixel as put
|
|
import test_image_getpixel as get
|
|
|
|
|
|
Image.USE_CFFI_ACCESS = True
|
|
|
|
def test_put():
|
|
put.test_sanity()
|
|
|
|
def test_get():
|
|
get.test_basic()
|
|
get.test_signedness()
|
|
|
|
def _test_get_access(im):
|
|
""" Do we get the same thing as the old pixel access """
|
|
|
|
""" Using private interfaces, forcing a capi access and a pyaccess for the same image """
|
|
caccess = im.im.pixel_access(False)
|
|
access = PyAccess.new(im, False)
|
|
|
|
w,h = im.size
|
|
for x in range(0,w,10):
|
|
for y in range(0,h,10):
|
|
assert_equal(access[(x,y)], caccess[(x,y)])
|
|
|
|
def test_get_vs_c():
|
|
_test_get_access(lena('RGB'))
|
|
_test_get_access(lena('RGBA'))
|
|
_test_get_access(lena('L'))
|
|
_test_get_access(lena('LA'))
|
|
_test_get_access(lena('1'))
|
|
_test_get_access(lena('P'))
|
|
#_test_get_access(lena('PA')) # PA -- how do I make a PA image???
|
|
_test_get_access(lena('F'))
|
|
|
|
im = Image.new('I;16', (10,10), 40000)
|
|
_test_get_access(im)
|
|
im = Image.new('I;16L', (10,10), 40000)
|
|
_test_get_access(im)
|
|
im = Image.new('I;16B', (10,10), 40000)
|
|
_test_get_access(im)
|
|
|
|
im = Image.new('I', (10,10), 40000)
|
|
_test_get_access(im)
|
|
# These don't actually appear to be modes that I can actually make,
|
|
# as unpack sets them directly into the I mode.
|
|
#im = Image.new('I;32L', (10,10), -2**10)
|
|
#_test_get_access(im)
|
|
#im = Image.new('I;32B', (10,10), 2**10)
|
|
#_test_get_access(im)
|
|
|
|
|
|
|
|
def _test_set_access(im, color):
|
|
""" Are we writing the correct bits into the image? """
|
|
|
|
""" Using private interfaces, forcing a capi access and a pyaccess for the same image """
|
|
caccess = im.im.pixel_access(False)
|
|
access = PyAccess.new(im, False)
|
|
|
|
w,h = im.size
|
|
for x in range(0,w,10):
|
|
for y in range(0,h,10):
|
|
access[(x,y)] = color
|
|
assert_equal(color, caccess[(x,y)])
|
|
|
|
def test_set_vs_c():
|
|
_test_set_access(lena('RGB'), (255, 128,0) )
|
|
_test_set_access(lena('RGBA'), (255, 192, 128, 0))
|
|
_test_set_access(lena('L'), 128)
|
|
_test_set_access(lena('LA'), (128,128))
|
|
_test_set_access(lena('1'), 255)
|
|
_test_set_access(lena('P') , 128)
|
|
##_test_set_access(i, (128,128)) #PA -- undone how to make
|
|
_test_set_access(lena('F'), 1024.0)
|
|
|
|
im = Image.new('I;16', (10,10), 40000)
|
|
_test_set_access(im, 45000)
|
|
im = Image.new('I;16L', (10,10), 40000)
|
|
_test_set_access(im, 45000)
|
|
im = Image.new('I;16B', (10,10), 40000)
|
|
_test_set_access(im, 45000)
|
|
|
|
|
|
im = Image.new('I', (10,10), 40000)
|
|
_test_set_access(im, 45000)
|
|
# im = Image.new('I;32L', (10,10), -(2**10))
|
|
# _test_set_access(im, -(2**13)+1)
|
|
#im = Image.new('I;32B', (10,10), 2**10)
|
|
#_test_set_access(im, 2**13-1)
|