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()
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
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
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
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
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)
def test_composite_grayscale(filename, point, color): psd = PSDImage.load(full_name(filename)) assert color == color_PIL(psd, point)
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)
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
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
def test_resource_blocks(): psd = PSDImage.load(full_name("fill_adjustments.psd")) blocks = psd.image_resource_blocks assert "version_info" in blocks
def effects_psd(): psd = PSDImage.load(full_name('layer_effects.psd')) yield psd
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
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)
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)
def test_thumbnail(filename): psd = PSDImage.load(full_name(filename)) assert psd.thumbnail()
def test_composite(filename, point, color, get_color): psd = PSDImage.load(full_name(filename)) assert color == get_color(psd, point)
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
def test_mask_index(): psd = PSDImage.load(full_name('mask-index.psd')) layer = psd.layers[0] assert layer.has_mask() assert layer._index == 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)
def test_gradient_descriptor(): psd = PSDImage.load(full_name('effect-stroke-gradient.psd')) assert psd.layers[0].effects[0].gradient.type == b'ClNs' assert psd.layers[1].effects[0].gradient.type == b'CstS'