Esempio n. 1
0
def test_embedded():
    # This file contains both an embedded and linked png
    psd = PSDImage.load(os.path.join(DATA_PATH, 'placedLayer.psd'))
    link = psd.smart_objects['5a96c404-ab9c-1177-97ef-96ca454b82b7']
    assert link.filename == 'linked-layer.png'
    with open(os.path.join(DATA_PATH, 'linked-layer.png'), 'rb') as f:
        assert link.data == f.read()
Esempio n. 2
0
def test_layer_visibility():
    visible = dict(
        (layer.name, layer.visible)
        for layer in PSDImage(decode_psd('hidden-layer.psd')).layers)
    assert visible['Shape 1']
    assert not visible['Shape 2']
    assert visible['Background']
Esempio n. 3
0
def test_render_quality(filename):
    psd = PSDImage.load(full_name(filename))
    preview = psd.as_PIL()
    rendered = psd.as_PIL(render=True)
    assert isinstance(preview, Image)
    assert isinstance(rendered, Image)
    preview_hash = imagehash.average_hash(preview)
    rendered_hash = imagehash.average_hash(rendered)
    error_count = np.sum(np.bitwise_xor(preview_hash.hash, rendered_hash.hash))
    error_rate = error_count / float(preview_hash.hash.size)
    assert error_rate <= 0.1
Esempio n. 4
0
def test_groups_without_opening():
    psd = PSDImage(decode_psd('broken-groups.psd'))
    group1, group2 = psd.layers
    assert group1.name == 'bebek'
    assert group2.name == 'anne'

    assert len(group1.layers) == 1
    assert len(group2.layers) == 1

    assert group1.layers[0].name == 'el sol'
    assert group2.layers[0].name == 'kas'
Esempio n. 5
0
def test_mask_data_as_pil(filename):
    psd = PSDImage.load(full_name(filename))
    for layer in psd.descendants():
        if layer.has_mask():
            mask = layer.mask
            if mask.has_box():
                assert mask.as_PIL() is not None
            else:
                assert mask.width == 0 or mask.height == 0
                assert mask.bbox.width == 0 or mask.bbox.height == 0
            assert mask.background_color is not None
            assert not mask.disabled
Esempio n. 6
0
def test_groups_simple():
    psd = PSDImage(decode_psd('group.psd'))
    assert len(psd.layers) == 2

    group = psd.layers[0]
    assert group.kind == "group"
    assert len(group.layers) == 1
    assert group.name == 'Group 1'
    assert group.closed is False

    group_element = group.layers[0]
    assert group_element.name == 'Shape 1'
Esempio n. 7
0
def test_clipping():
    psd = PSDImage(decode_psd('clipping-mask2.psd'))
    assert psd.layers[0].name == 'Group 1'
    layer = psd.layers[0].layers[0]
    assert layer.name == 'Rounded Rectangle 4'
    assert layer.has_clip_layers()
    assert layer.clip_layers[0].name == 'Color Balance 1'
    assert psd.layers[1].name == 'Rounded Rectangle 3'
    assert psd.layers[1].clip_layers[0].name == 'Brightness/Contrast 1'
    assert psd.layers[2].name == 'Polygon 1'
    assert psd.layers[2].clip_layers[0].name == 'Ellipse 1'
    assert psd.layers[2].clip_layers[1].name == 'Rounded Rectangle 2'
    assert psd.layers[2].clip_layers[2].name == 'Rounded Rectangle 1'
    assert psd.layers[2].clip_layers[3].name == 'Color Fill 1'
    assert psd.layers[3].name == 'Background'
Esempio n. 8
0
def test_group_visibility():
    psd = PSDImage(decode_psd('hidden-groups.psd'))

    group2, group1, bg = psd.layers
    assert group2.name == 'Group 2'
    assert group1.name == 'Group 1'
    assert bg.name == 'Background'

    assert bg.visible is True
    assert group2.visible is True
    assert group1.visible is False

    assert group2.layers[0].visible is True

    # The flag is 'visible=True', but this layer is hidden
    # because its group is not visible.
    assert group1.layers[0].visible is True
Esempio n. 9
0
def test_mask_data_api():
    psd = PSDImage.load(full_name('layer_mask_data.psd'))
    layer = psd.layers[0]
    assert layer.has_mask()
    mask = layer.mask
    assert mask.has_real()
    assert mask.top == 146
    assert mask.left == 36
    assert mask.bottom == 186
    assert mask.right == 170
    assert mask.background_color == 255
    assert mask.relative_to_layer == False
    assert mask.disabled == False
    assert mask.inverted == False
    assert mask.user_mask_from_render == True
    assert mask.parameters_applied == True
    assert mask.parameters
    assert mask.real_flags
Esempio n. 10
0
def test_adjustment_and_shapes():
    psd = PSDImage(decode_psd('adjustment-fillers.psd'))
    for layer in psd.layers:
        if layer.bbox.width:
            assert isinstance(layer.as_PIL(), Image)
        if layer.kind == "adjustment":
            assert layer.adjustment_type
            assert layer.data
        if layer.kind == "shape":
            assert isinstance(layer.get_anchors(), list)
            if layer.has_origination():
                assert layer.origination
            if layer.has_vector_mask():
                vector_mask = layer.vector_mask
                assert vector_mask
                if layer.has_path():
                    assert len(vector_mask.anchors) > 0
            if layer.has_stroke():
                assert layer.stroke
            if layer.has_stroke_content():
                assert layer.stroke_content
Esempio n. 11
0
def test_userapi_placed_layers():
    img = PSDImage(decode_psd("placedLayer.psd"))
    bg = img.layers[3]
    assert bg.kind == 'pixel'
    assert not hasattr(bg, 'object_bbox')
    assert not hasattr(bg, 'placed_bbox')

    layer0 = img.layers[0]
    assert layer0.kind == 'smartobject'
    assert layer0.object_bbox == BBox(0, 0, 64, 64)
    assert layer0.placed_bbox == BBox(x1=96.0, y1=96.0, x2=160.0, y2=160.0)

    layer1 = img.layers[1]
    assert layer1.kind == 'smartobject'
    assert layer1.object_bbox == BBox(0, 0, 101, 55)
    assert layer1.object_bbox.width == 101
    assert layer1.placed_bbox == BBox(x1=27.0, y1=73.0, x2=229.0, y2=183.0)

    layer2 = img.layers[2]
    assert layer2.kind == 'smartobject'
    assert layer2.object_bbox == BBox(0, 0, 64, 64)
    assert layer2.placed_bbox == BBox(x1=96.0, y1=96.0, x2=160.0, y2=160.0)
Esempio n. 12
0
 def __init__(self):
     
     
     self.special_file = open("teste.psd", 'rb')
     
     self.resource_list = []
     
     
     list_hex = self.special_file.read()
        
     t  = self.special_file.readline(100)
     #t_u = binascii.hexlify(t)
     #t = int(t_u, 16)
     ''''c = 0
     for a in list_hex:
         print a.encode("hex")
         if c == 50:
             break
         c += 1
         pass'''
     
     
     
         
            
     self.file_analyse = PSDImage.load("teste.psd")
    
     self.resource_ids_maker()
     
     
     self.extract_header(list_hex)
     lastIndex = self.color_mode(list_hex)
     self.image_resource(list_hex, lastIndex)
     
     
    
     pass 
Esempio n. 13
0
def test_composite_grayscale(filename, point, color):
    psd = PSDImage.load(full_name(filename))
    assert color == color_PIL(psd, point)
Esempio n. 14
0
def test_layer_colors(filename, layer_num, point, color, get_color):
    psd = PSDImage.load(full_name(filename))
    layer = psd.layers[layer_num]
    assert color == get_color(layer, point)
Esempio n. 15
0
def test_generator():
    psd = PSDImage.load(full_name('hidden-groups.psd'))
    assert len([True for layer in psd.layers]) == 3
    assert len([True for layer in psd.descendants()]) == 5
Esempio n. 16
0
def test_composite(filename, point, color, get_color):
    if (get_color == color_pymaging
            and filename == 'background-red-opacity-80.psd'):
        pytest.xfail("Pymaging white-bg removal not implemented")
    psd = PSDImage.load(full_name(filename))
    assert color == get_color(psd, point)
Esempio n. 17
0
def test_group_with_empty_layer():
    psd = PSDImage(decode_psd('empty-layer.psd'))
    group1, bg = psd.layers
    assert group1.name == 'group'
    assert bg.name == 'Background'
Esempio n. 18
0
def test_composite(filename, point, color, get_color):
    psd = PSDImage.load(full_name(filename))
    assert color == get_color(psd, point)
Esempio n. 19
0
def test_groups_32bit():
    psd = PSDImage(decode_psd('32bit5x5.psd'))
    assert len(psd.layers) == 3
    assert psd.layers[0].name == 'Background copy 2'
Esempio n. 20
0
def test_no_groups():
    psd = PSDImage(decode_psd('2layers.psd'))
    assert len(psd.layers) == 2
    assert not any(layer.kind == "group" for layer in psd.layers)
Esempio n. 21
0
def psd():
    return PSDImage(decode_psd('fill_adjustments.psd'))
Esempio n. 22
0
def test_render_clip_layers(filename):
    psd = PSDImage.load(full_name(filename))
    image1 = psd.as_PIL()
    image2 = psd.as_PIL(render=True)
    assert isinstance(image1, Image)
    assert isinstance(image2, Image)
Esempio n. 23
0
def test_userapi_no_placed_layers():
    img = PSDImage(decode_psd("1layer.psd"))
    layer = img.layers[0]
    assert not hasattr(layer, 'object_bbox')
    assert not hasattr(layer, 'placed_bbox')
Esempio n. 24
0
def test_adjustment_and_shapes():
    psd = PSDImage(decode_psd('adjustment-mask.psd'))
    for layer in psd.descendants():
        layer.as_PIL()
        if layer.has_mask():
            layer.mask.as_PIL()
Esempio n. 25
0
def test_layer_merging_pixels(filename, point, color):
    psd = PSDImage.load(full_name(filename))
    merged_image = psd.as_PIL_merged()
    assert color[:3] == merged_image.getpixel(point)[:3]
    assert merged_image.getpixel(point)[3] == 255  # alpha channel
Esempio n. 26
0
def test_layer_colors_grayscale(filename, layer_num, point, color):
    psd = PSDImage.load(full_name(filename))
    layer = psd.layers[layer_num]
    assert color == color_PIL(layer, point)
Esempio n. 27
0
def test_mask_index():
    psd = PSDImage.load(full_name('mask-index.psd'))
    layer = psd.layers[0]
    assert layer.has_mask()
    assert layer._index == 0
Esempio n. 28
0
def test_layer_merging_size(filename, point, color):
    psd = PSDImage.load(full_name(filename))
    merged_image = psd.as_PIL_merged()
    assert merged_image.size == psd.as_PIL().size
Esempio n. 29
0
def test_print_tree(filename):
    psd = PSDImage(decode_psd(filename))
    psd.print_tree()
Esempio n. 30
0
def test_layer_merging_pixels_transparency(filename, point, color):
    psd = PSDImage.load(full_name(filename))
    merged_image = psd.as_PIL_merged()
    assert color == merged_image.getpixel(point)
Esempio n. 31
0
def test_generator_with_clip_layers():
    psd = PSDImage.load(full_name('clipping-mask.psd'))
    assert not psd.layers[0].has_clip_layers()
    assert len([True for layer in psd.layers]) == 2
    assert len([True for layer in psd.descendants()]) == 7
    assert len([True for layer in psd.descendants(include_clip=False)]) == 6