Example #1
0
def test_composite_viewport():
    psd = PSDImage.open(full_name('layers/smartobject-layer.psd'))
    bbox = (1, 1, 31, 31)

    shape = (bbox[3] - bbox[1], bbox[2] - bbox[0], 1)
    assert composite(psd)[1].shape == (psd.height, psd.width, 1)
    assert composite(psd, viewport=bbox)[1].shape == shape

    assert composite(psd[0])[1].shape == (psd[0].height, psd[0].width, 1)
    assert composite(psd[0], viewport=bbox)[1].shape == shape
Example #2
0
def test_gradient_styles(filename):
    psd = PSDImage.open(full_name(filename))
    for artboard in psd:
        for layer in artboard:
            desc = layer.tagged_blocks.get_data(Tag.GRADIENT_FILL_SETTING)
            form = desc.get(Key.Gradient).get(Type.GradientForm).enum
            reference = composite(layer)[0]
            result = composite(layer, force=True)[0]
            if form == Enum.CustomStops:
                assert _mse(reference, result) <= 0.08
            elif form == Enum.ColorNoise:
                # Noise gradient is not of good quality.
                assert _mse(reference, result) <= 0.2
Example #3
0
def test_composite_artboard():
    psd = PSDImage.open(full_name('artboard.psd'))
    document_image = psd.numpy()
    assert document_image.shape[:2] == (psd.height, psd.width)
    artboard = psd[0]
    artboard_image = composite(artboard)[0]
    assert artboard_image.shape[:2] == (artboard.height, artboard.width)
Example #4
0
def test_composite_minimal(filename):
    source = PSDImage.open(full_name('layers-minimal/' + filename))
    reference = PSDImage.open(full_name('layers/' + filename)).numpy()
    color, _, alpha = composite(source, force=True)
    result = color
    if reference.shape[2] > color.shape[2]:
        result = np.concatenate((color, alpha), axis=2)
    assert _mse(reference, result) <= 0.017
Example #5
0
def test_apply_mask():
    from PIL import Image
    psd = PSDImage.open(full_name('masks/2.psd'))
    reference = np.asarray(Image.open(full_name('masks/2.png'))) / 255.
    result = np.concatenate(composite(psd)[::2], axis=2)
    assert reference.shape == result.shape
    # Hidden color seems different.
    assert _mse(reference[:, :, -1], result[:, :, -1]) <= 0.01
Example #6
0
def composite_error(layer, threshold, force=True, channel=None):
    reference = layer.numpy(channel)
    color, _, alpha = composite(layer, force=force)
    result = color
    if reference.shape[2] > color.shape[2]:
        result = np.concatenate((color, alpha), axis=2)
    error = _mse(reference, result)
    assert error <= threshold
    return error
Example #7
0
def test_composite_stroke():
    psd = PSDImage.open(full_name('stroke.psd'))
    reference = composite(psd, force=True)
    result = composite(psd)
    assert _mse(reference[0], result[0]) > 0
Example #8
0
def test_composite_layer_filter():
    psd = PSDImage.open(full_name('clipping-mask.psd'))
    reference = composite(psd)
    result = composite(psd, layer_filter=lambda x: x.name != 'Shape 3')
    assert _mse(reference[0], result[0]) > 0
Example #9
0
def test_apply_opacity():
    psd = PSDImage.open(full_name('opacity-fill.psd'))
    result = composite(psd)
    assert _mse(psd.numpy('shape'), result[2]) < 0.01
Example #10
0
def test_group_mask():
    psd = PSDImage.open(full_name('masks3.psd'))
    reference = psd.numpy()
    result = composite(psd, force=True)[0]
    assert _mse(reference, result) <= 0.01