def test_target_size_repositions_result_inside_variant_ratio(self): variant = Variant(id='wide', focus_x=5.0 / 16, focus_y=3.0 / 8, zoom=1, aspect_ratio='8:1') self.assertImage([ ' x ', ' ', ], self.transform.create_variant_image(variant, (8, 2)))
def test_fits_larger_side_of_mask_to_image_size(self): variant = Variant(id='square', focus_x=0.5, focus_y=0.5, zoom=1, aspect_ratio='1:1') image = self.transform.create_variant_image(variant) self.assertEqual((8, 8), image.getImageSize())
def test_ratio_original_uses_ratio_of_source_image(self): variant = Variant(id='original', focus_x=5.0 / 16, focus_y=3.0 / 8, zoom=0.5, aspect_ratio='original') self.assertImage([' ', ' x ', ' ', ' '], self.transform.create_variant_image(variant))
def test_does_not_exceed_maximum_size(self): variant = Variant(id='square', focus_x=0.5, focus_y=0.5, zoom=1, aspect_ratio='1:1') self.transform.MAXIMUM_IMAGE_SIZE = 5 image = self.transform.create_variant_image(variant, size=(10, 10)) self.assertEqual((5, 5), image.getImageSize())
def test_zoom_scales_image_and_respects_focus_point(self): variant = Variant(id='square', focus_x=5.0 / 16, focus_y=3.0 / 8, zoom=0.5, aspect_ratio='1:1') self.assertImage([ ' ', ' x ', ' ', ' ', ], self.transform.create_variant_image(variant))
def test_no_size_matches_returns_none(self): from zeit.content.image.variant import Variants, Variant with mock.patch.object(Variants, 'values', return_value=[ Variant(name='foo', id='small', max_size='100x100') ]): self.assertEqual(None, self.group.get_variant_by_size('foo__9999x9999'))
def test_focus_point_after_crop_has_same_relative_position_as_before(self): variant = Variant(id='square', focus_x=5.0 / 16, focus_y=3.0 / 8, zoom=1, aspect_ratio='1:1') self.assertImage([ ' ', ' ', ' x ', ' ', ' ', ' ', ' ', ' ', ], self.transform.create_variant_image(variant))
def test_image_enhancements_are_applied_and_change_image(self): # Brightness of 0.0 makes image black variant = Variant(id='square', focus_x=5.0 / 16, focus_y=3.0 / 8, zoom=1, aspect_ratio='2:1', brightness=0.0) self.assertImage([ 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxx', ], self.transform.create_variant_image(variant))
def test_variant_fill_color_is_applied_if_image_has_alpha_channel(self): img = zeit.content.image.testing.create_local_image( 'Frame.PNG', 'tests/') transform = zeit.content.image.interfaces.ITransform(img) variant = Variant( id='square', focus_x=0.5, focus_y=0.5, zoom=1, aspect_ratio='1:1') self.assertImage([ ' ', ' rrrrrr ', ' rrrrrr ', ' rrrrrr ', ' rrrrrr ', ' rrrrrr ', ' rrrrrr ', ' ', ], transform.create_variant_image(variant, fill_color='ff0000'))
def test_all_image_enhancements_are_applied_to_variant_image(self): from mock import patch import PIL.Image variant = Variant( id='square', focus_x=0.5, focus_y=0.5, zoom=1, aspect_ratio='2:1', brightness=0.1, contrast=0.2, saturation=0.3, sharpness=0.4) # Prepare side effect to return the image given to Image Enhancement def return_image(degenerated_image, original_image, alpha): return original_image with patch.object(PIL.Image, 'blend', wraps=return_image) as blend: self.transform.create_variant_image(variant) factors = [list(x)[0][2] for x in blend.call_args_list] self.assertEqual(4, blend.call_count) self.assertEqual([0.1, 0.2, 0.3, 0.4], sorted(factors))