def test_with_numpy(): if np is None: skip('Numpy not available') im = np.random.normal(100, 50, (100, 100, 1)).astype(np.float32) with raises(TypeError): # need uint8 write_png(im) im = np.ones((100, 100, 1), np.uint8) * (7*16+7) blob = write_png(im) assert blob == write_png(im0, shape0) im = np.random.normal(100, 50, (100, 100)).astype(np.uint8) blob = write_png(im) im_bytes, shape = read_png(blob) assert isinstance(im_bytes, (bytearray, bytes)) im_check = np.frombuffer(im_bytes, 'uint8').reshape(shape) assert im_check.shape == im.shape + (3, ) for i in range(3): assert (im_check[:,:,i] == im).all()
def test_reading(): # # Read using filename (also as unicode) # for i in range(5): # filename = os.path.join(tempdir, 'test%i.png' % i) # if sys.version_info[0] == 2 and i > 2: # filename = unicode(filename) # im, shape = read_png(filename) # assert isinstance(im, bytearray) # assert shape[:len(shapes[i])] == shapes[i] # assert im == ims[i] # Read using file object for i in range(5): filename = os.path.join(tempdir, 'test%i.png' % i) with open(filename, 'rb') as f: im, shape = read_png(f) assert isinstance(im, bytearray) if len(shapes[i]) == 2: assert shape == shapes[i] + (3, ) assert im[::3] == ims[i] else: assert shape == shapes[i] assert im == ims[i] # Read using binary blob for i in range(5): filename = os.path.join(tempdir, 'test%i.png' % i) with open(filename, 'rb') as f: blob = f.read() im, shape = read_png(blob) if len(shapes[i]) == 2: assert shape == shapes[i] + (3, ) assert im[::3] == ims[i] else: assert shape == shapes[i] assert im == ims[i] with raises((RuntimeError, TypeError)): # RuntimeError on legacy py read_png('not_a_png_blob.png') with raises(TypeError): read_png([]) with raises(RuntimeError): read_png(b'xxxxxxxxxxxxxxxxxxxx\x0axx') with raises(RuntimeError): read_png(b'\x00') if sys.version_info > (3, ): # seen as filenames on legacy py with raises(RuntimeError): read_png(b'') with raises(RuntimeError): read_png(b'xxxxxxxxxxxxxxxxxxxx')