Beispiel #1
0
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()
Beispiel #2
0
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')