def test_slices_resource(filename): decoded = decode_psd(filename) for block in decoded.image_resource_blocks: if block.resource_id == ImageResourceID.SLICES: assert isinstance(block.data, SlicesHeaderV6) for item in block.data.items: assert isinstance(item, SlicesResourceBlock)
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']
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'
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'
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'
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
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
def psd(): return PSDImage(decode_psd('fill_adjustments.psd'))
def test_print_tree(filename): psd = PSDImage(decode_psd(filename)) psd.print_tree()
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()
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'
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)
def test_groups_32bit(): psd = PSDImage(decode_psd('32bit5x5.psd')) assert len(psd.layers) == 3 assert psd.layers[0].name == 'Background copy 2'
def test_print_tree(): psd = PSDImage(decode_psd('empty-group.psd')) psd.print_tree()