mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-25 05:01:26 +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)
 |