def test_resize(self): context = ImageTransform((640, 480)) resized = context.resize((320, 240)) vector = Vector(100, 200) transformed = resized.transform_vector(vector) self.assertEqual(transformed, Vector(50, 100)) untransformed = resized.untransform_vector(transformed) self.assertEqual(untransformed, vector)
def test_crop(self): context = ImageTransform((640, 480)) cropped = context.crop(Rect(200, 100, 300, 200)) vector = Vector(250, 150) transformed = cropped.transform_vector(vector) self.assertEqual(transformed, Vector(50, 50)) untransformed = cropped.untransform_vector(transformed) self.assertEqual(untransformed, vector)
def test_resize_then_crop(self): context = ImageTransform((640, 480)) resized = context.resize((320, 240)) cropped = resized.crop(Rect(200, 100, 300, 200)) vector = Vector(500, 300) transformed = cropped.transform_vector(vector) self.assertEqual(transformed, Vector(50, 50)) untransformed = cropped.untransform_vector(transformed) self.assertEqual(untransformed, vector)
def get_transform(self, image): """ Returns an ImageTransform with all the transforms in this filter applied. The ImageTransform is an object with two attributes: - .size - The size of the final image - .matrix - An affine transformation matrix that combines any transform/scale/rotation operations that need to be applied to the image """ transform = ImageTransform((image.width, image.height)) for operation in self.transform_operations: transform = operation.run(transform, image) return transform