Esempio n. 1
0
    def rotate(self,
               degrees,
               clockwise=False,
               resample_algorithm=nearest,
               resize_canvas=True):
        """
        Returns the image obtained by rotating this image by the
        given number of degrees.
        Anticlockwise unless clockwise=True is given.
        """
        # translate to the origin first, then rotate, then translate back
        transform = AffineTransform()
        transform = transform.translate(self.width * -0.5, self.height * -0.5)
        transform = transform.rotate(degrees, clockwise=clockwise)

        width, height = self.width, self.height
        if resize_canvas:
            # determine new width
            width, height = get_transformed_dimensions(transform,
                                                       (0, 0, width, height))

        transform = transform.translate(width * 0.5, height * 0.5)

        pixels = resample_algorithm.affine(self,
                                           transform,
                                           resize_canvas=resize_canvas)

        return self._copy(pixels)
Esempio n. 2
0
    def rotate(self, degrees, clockwise=False, resample_algorithm=nearest, resize_canvas=True):
        """
        Returns the image obtained by rotating this image by the
        given number of degrees.
        Anticlockwise unless clockwise=True is given.
        """
        # translate to the origin first, then rotate, then translate back
        transform = AffineTransform()
        transform = transform.translate(self.width * -0.5, self.height * -0.5)
        transform = transform.rotate(degrees, clockwise=clockwise)

        width, height = self.width, self.height
        if resize_canvas:
            # determine new width
            width, height = get_transformed_dimensions(transform, (0, 0, width, height))

        transform = transform.translate(width * 0.5, height * 0.5)

        pixels = resample_algorithm.affine(self, transform, resize_canvas=resize_canvas)

        return self._copy(pixels)
Esempio n. 3
0
 def test_chained_translate_rotate(self):
     a = AffineTransform()
     # translate by (3, 4). rotate by 90 degrees
     t = a.translate(3, 4).rotate(90)
     self.assertEqual(t.matrix, (0, -1, 0, 1, 0, 0, 4, -3, 1))
Esempio n. 4
0
 def test_translate(self):
     a = AffineTransform()
     t = a.translate(3, 4)
     self.assertEqual(t.matrix, (1, 0, 0, 0, 1, 0, 3, 4, 1))
     self.assertEqual(t.translate(3, 4).matrix, (1, 0, 0, 0, 1, 0, 6, 8, 1))
Esempio n. 5
0
 def test_chained_translate_rotate_translate(self):
     a = AffineTransform()
     # translate by (3, 4). rotate by 90 degrees. then translate back.
     t = a.translate(3, 4).rotate(90).translate(-3, -4)
     self.assertEqual(t.matrix, (0, -1, 0, 1, 0, 0, 1, -7, 1))
Esempio n. 6
0
 def test_chained_translate_rotate_translate(self):
     a = AffineTransform()
     # translate by (3, 4). rotate by 90 degrees. then translate back.
     t = a.translate(3, 4).rotate(90).translate(-3, -4)
     self.assertEqual(t.matrix, (0, -1, 0, 1, 0, 0, 1, -7, 1))
Esempio n. 7
0
 def test_chained_translate_rotate(self):
     a = AffineTransform()
     # translate by (3, 4). rotate by 90 degrees
     t = a.translate(3, 4).rotate(90)
     self.assertEqual(t.matrix, (0, -1, 0, 1, 0, 0, 4, -3, 1))
Esempio n. 8
0
 def test_translate(self):
     a = AffineTransform()
     t = a.translate(3, 4)
     self.assertEqual(t.matrix, (1, 0, 0, 0, 1, 0, 3, 4, 1))
     self.assertEqual(t.translate(3, 4).matrix, (1, 0, 0, 0, 1, 0, 6, 8, 1))