def test_initialcropping(self): self.assertEqual(self.image.cropping, ','.join(map(lambda d: str(d), max_cropping(120, 100, self.width, self.height)))) # free crop self.assertEqual(self.image.cropping_free, ','.join(map(lambda d: str(d), max_cropping(120, 100, self.width, self.height, True))))
def test_initialcropping(self): self.assertEqual( self.image.cropping, ','.join( map(lambda d: str(d), max_cropping(120, 100, self.width, self.height)))) # free crop self.assertEqual( self.image.cropping_free, ','.join( map(lambda d: str(d), max_cropping(120, 100, self.width, self.height, True))))
def test_fk_initialcropping(self): image = ImageFK(image=self.image) image.save() self.assertEqual( image.cropping, ','.join( map(lambda d: str(d), max_cropping(120, 100, self.width, self.height))))
def crop_artist_pictures(queryset): for artist in queryset: image = artist.photo if image: box = max_cropping(580, 580, image.width, image.height, False) artist.cropping = ','.join(map(lambda i: str(i), box)) artist.save()
def test_maxcropping(self): # normal crop self.assertEqual([0, 0, 400, 400], max_cropping(100, 100, 400, 400)) self.assertEqual([100, 0, 300, 400], max_cropping(100, 200, 400, 400)) self.assertEqual([0, 100, 400, 300], max_cropping(200, 100, 400, 400)) # free crop self.assertEqual([0, 0, 400, 400], max_cropping(100, 100, 400, 400, True)) self.assertEqual([0, 0, 400, 400], max_cropping(100, 200, 400, 400, True)) self.assertEqual([0, 0, 400, 400], max_cropping(200, 100, 400, 400, True)) # to small self.assertEqual([0, 0, 100, 100], max_cropping(200, 200, 100, 100)) self.assertEqual([0, 25, 100, 75], max_cropping(200, 100, 100, 100)) self.assertEqual([25, 0, 75, 100], max_cropping(100, 200, 100, 100))
def initial_cropping(self, sender, instance, *args, **kwargs): """ Override original `ImageRatioField.initial_cropping` as it fails on staging CI. Due to non existing images `ImageRatioField.initial_cropping` was failed with `FileNotFoundError`. In this method we caught `FileNotFoundError` and set `width` and `height` to 0 for non existing images. """ for ratiofieldname in getattr(instance, 'ratio_fields', []): # cropping already set? if getattr(instance, ratiofieldname): continue # get image ratiofield = instance._meta.get_field(ratiofieldname) image = getattr(instance, ratiofield.image_field) if ratiofield.image_fk_field and image: # image is ForeignKey # get the imagefield image = getattr(image, ratiofield.image_fk_field) if not image: continue # calculate initial cropping try: width, height = (image.width, image.height) except AttributeError: width, height = get_backend().get_size(image) # Catch non existing images except FileNotFoundError: width, height = (0, 0) try: # handle corrupt or accidentally removed images box = max_cropping(ratiofield.width, ratiofield.height, width, height, free_crop=ratiofield.free_crop) box = ','.join(map(lambda i: str(i), box)) except IOError: box = '' setattr(instance, ratiofieldname, box)
def test_fk_initialcropping(self): image = ImageFK(image=self.image) image.save() self.assertEqual(image.cropping, ','.join(map(lambda d: str(d), max_cropping(120, 100, self.width, self.height))))