예제 #1
0
파일: views.py 프로젝트: a1russell/photasm
    def setUp(self):
        # Create an image.
        image_fd, image_path = tempfile.mkstemp(suffix='.jpg')
        os.close(image_fd)
        Image.new('RGB', (1, 1)).save(image_path, 'JPEG')

        # Create a Photo object.
        user = User.objects.create_user('adam', '*****@*****.**',
                                        'adampassword')
        self.album = Album.objects.create(owner=user, name="Test")
        photo = Photo()
        photo.owner = user
        image = open(image_path)
        photo.image = ImageFile(image)
        photo.album = self.album
        photo.is_jpeg = True
        photo.save()
        image.close()
        os.remove(image_path)
        photo.create_thumbnail()

        self.client.login(username='******', password='******')
예제 #2
0
파일: photo.py 프로젝트: a1russell/photasm
    def runTest(self):
        # Create a JPEG with an embedded thumbnail.
        image_fd, image_path = tempfile.mkstemp(suffix='.jpg')
        os.close(image_fd)
        thumb_fd, thumb_path = tempfile.mkstemp(suffix='.jpg')
        os.close(thumb_fd)
        image = Image.new('RGB', (640, 480))
        image.save(image_path, 'JPEG')
        thumb = image.copy()
        thumb.thumbnail((160, 120))
        thumb.save(thumb_path, 'JPEG')

        # Write the thumbnail to the image metadata.
        metadata = pyexiv2.Image(image_path)
        metadata.readMetadata()
        metadata.setThumbnailFromJpegFile(thumb_path)
        metadata.writeMetadata()
        os.remove(thumb_path)

        # Create Photo model object.
        user = User.objects.create(username="******")
        album = Album.objects.create(owner=user, name="Test")
        photo = Photo()
        photo.owner = user
        image = open(image_path)
        photo.image = ImageFile(image)
        photo.album = album
        photo.is_jpeg = True
        photo.save()
        image.close()
        os.remove(image_path)

        # Create and verify the thumbnail.
        photo.create_thumbnail()
        photo.save()
        thumb = Image.open(photo.thumbnail.path)
        self.assertEqual(thumb.size[0] * thumb.size[1], 19200)
        metadata = pyexiv2.Image(photo.image.path)
        metadata.readMetadata()
        embedded = metadata.getThumbnailData()[1]
        external = open(photo.thumbnail.path).read()
        self.assertEqual(embedded, external)

        # Test JPEG without thumbnail already embedded.
        image = Image.new('RGB', (640, 480))
        image.save(image_path, 'JPEG')
        photo = Photo()
        photo.owner = user
        image = open(image_path)
        photo.image = ImageFile(image)
        photo.album = album
        photo.is_jpeg = True
        photo.save()
        image.close()
        os.remove(image_path)
        photo.create_thumbnail()
        photo.save()
        thumb = Image.open(photo.thumbnail.path)
        self.assertEqual(thumb.size[0] * thumb.size[1], 19200)
        metadata = pyexiv2.Image(photo.image.path)
        metadata.readMetadata()
        embedded = metadata.getThumbnailData()[1]
        external = open(photo.thumbnail.path).read()
        self.assertEqual(embedded, external)

        # Test BMP.
        image_fd, image_path = tempfile.mkstemp(suffix='.bmp')
        os.close(image_fd)
        image = Image.new('RGB', (640, 480))
        image.save(image_path, 'BMP')
        photo = Photo()
        photo.owner = user
        image = open(image_path)
        photo.image = ImageFile(image)
        photo.album = album
        photo.is_jpeg = False
        photo.save()
        image.close()
        os.remove(image_path)
        photo.create_thumbnail()
        photo.save()
        thumb = Image.open(photo.thumbnail.path)
        self.assertEqual(thumb.size[0] * thumb.size[1], 19200)

        # Test small image.
        image = Image.new('RGB', (80, 60))
        image.save(image_path, 'JPEG')
        photo = Photo()
        photo.owner = user
        image = open(image_path)
        photo.image = ImageFile(image)
        photo.album = album
        photo.is_jpeg = True
        photo.save()
        image.close()
        os.remove(image_path)
        self.assertEqual(photo.create_thumbnail(), None)
        photo.save()
        thumb = Image.open(photo.thumbnail.path)
        self.assertEqual(thumb.size, (80, 60))
        metadata = pyexiv2.Image(photo.image.path)
        metadata.readMetadata()
        embedded = metadata.getThumbnailData()[1]
        external = open(photo.thumbnail.path).read()
        self.assertEqual(embedded, external)

        User.objects.all().delete()
        Album.objects.all().delete()
        Photo.objects.all().delete()