Skip to content

Commit

Permalink
Added __copy__ method to Image
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Mar 16, 2016
1 parent d3727b5 commit bb0d312
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
2 changes: 2 additions & 0 deletions PIL/Image.py
Original file line number Diff line number Diff line change
Expand Up @@ -1012,6 +1012,8 @@ def copy(self):
im = self.im.copy()
return self._new(im)

__copy__ = copy

def crop(self, box=None):
"""
Returns a rectangular region from this image. The box is a
Expand Down
29 changes: 25 additions & 4 deletions Tests/test_image_copy.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,37 @@
from helper import unittest, PillowTestCase, hopper

import copy


class TestImageCopy(PillowTestCase):

def test_copy(self):
def copy(mode):
croppedCoordinates = (10, 10, 20, 20)
croppedSize = (10, 10)
for mode in "1", "P", "L", "RGB", "I", "F":
# Internal copy method
im = hopper(mode)
out = im.copy()
self.assertEqual(out.mode, mode)
self.assertEqual(out.mode, im.mode)
self.assertEqual(out.size, im.size)
for mode in "1", "P", "L", "RGB", "I", "F":
copy(mode)

# Python's copy method
im = hopper(mode)
out = copy.copy(im)
self.assertEqual(out.mode, im.mode)
self.assertEqual(out.size, im.size)

# Internal copy method on a cropped image
im = hopper(mode)
out = im.crop(croppedCoordinates).copy()
self.assertEqual(out.mode, im.mode)
self.assertEqual(out.size, croppedSize)

# Python's copy method on a cropped image
im = hopper(mode)
out = copy.copy(im.crop(croppedCoordinates))
self.assertEqual(out.mode, im.mode)
self.assertEqual(out.size, croppedSize)

if __name__ == '__main__':
unittest.main()
Expand Down

0 comments on commit bb0d312

Please sign in to comment.