def test_unregister_methods(self): """Ensure versatileimagefield_registry unregister methods work.""" self.assertIn('crop', versatileimagefield_registry._sizedimage_registry) versatileimagefield_registry.unregister_sizer('crop') self.assertNotIn('crop', versatileimagefield_registry._sizedimage_registry) versatileimagefield_registry.register_sizer('crop', CroppedImage) self.assertIn('invert', versatileimagefield_registry._filter_registry) versatileimagefield_registry.unregister_filter('invert') self.assertNotIn('invert', versatileimagefield_registry._filter_registry) versatileimagefield_registry.register_filter('invert', InvertImage)
def test_registration_exceptions(self): """ Ensures all registration-related exceptions fire as expected """ class A(object): pass with self.assertRaises(InvalidSizedImageSubclass): versatileimagefield_registry.register_sizer('a', A) with self.assertRaises(InvalidFilteredImageSubclass): versatileimagefield_registry.register_filter('a', A) with self.assertRaises(UnallowedSizerName): versatileimagefield_registry.register_sizer('chunks', CroppedImage) with self.assertRaises(UnallowedFilterName): versatileimagefield_registry.register_filter('_poop', InvertImage) with self.assertRaises(AlreadyRegistered): versatileimagefield_registry.register_sizer('crop', CroppedImage) with self.assertRaises(AlreadyRegistered): versatileimagefield_registry.register_filter('invert', InvertImage) with self.assertRaises(NotRegistered): versatileimagefield_registry.unregister_sizer('poop') with self.assertRaises(NotRegistered): versatileimagefield_registry.unregister_filter('poop')
def test_registration_exceptions(self): """ Ensures all registration-related exceptions fire as expected """ class A(object): pass with self.assertRaises(InvalidSizedImageSubclass): versatileimagefield_registry.register_sizer('a', A) with self.assertRaises(InvalidFilteredImageSubclass): versatileimagefield_registry.register_filter('a', A) with self.assertRaises(UnallowedSizerName): versatileimagefield_registry.register_sizer('chunks', CroppedImage) with self.assertRaises(UnallowedFilterName): versatileimagefield_registry.register_filter('_poop', InvertImage) with self.assertRaises(AlreadyRegistered): versatileimagefield_registry.register_sizer('crop', CroppedImage) with self.assertRaises(AlreadyRegistered): versatileimagefield_registry.register_filter('invert', InvertImage) with self.assertRaises(NotRegistered): versatileimagefield_registry.unregister_sizer('poop') with self.assertRaises(NotRegistered): versatileimagefield_registry.unregister_filter('poop')
""" Returns a BytesIO instance of `image` with inverted colors """ image = image.convert('RGBA') txt = Image.new('RGBA', image.size, (255, 255, 255, 0)) # get a font fnt = ImageFont.truetype("arial.ttf", 200) # get a drawing context d = ImageDraw.Draw(txt) # draw text, half opacity d.text((750, 2000), "Klaudia Kusik Art", font=fnt, fill=(255, 255, 255, 128)) imagefile = BytesIO() inv_image = Image.alpha_composite(image, txt) inv_image = inv_image.convert("RGB") inv_image.save( imagefile, **save_kwargs, ) print(imagefile) return imagefile versatileimagefield_registry.register_filter('water', WatermarkImage)