Ejemplo n.º 1
0
    def test_save(self):
        """
        Ensure that these works:
        - image.save(filename='alice.jpg')
        - image.save(file=<File-Like Object>)
        - image.filename = 'bob.jpg'; image.save()
        """
        image = images.from_file('tests/10x10.jpg')
        self.assertEqual(image._format, 'JPEG')
        new_filename = 'tests/save.jpg'
        image.save(filename=new_filename)
        self.assertEqual(image.filename, new_filename)
        self.assertTrue(os.path.exists(new_filename))
        os.remove(new_filename)

        # Ensure image can be saved to a file like object
        file_like_object = io.BytesIO()
        self.assertFalse(file_like_object.getvalue())
        image.save(file=file_like_object)
        self.assertTrue(file_like_object.getvalue())

        new_filename = 'tests/save2.jpg'
        image.filename = new_filename
        image.save()
        self.assertTrue(os.path.exists(new_filename))
        os.remove(new_filename)
Ejemplo n.º 2
0
Archivo: tests.py Proyecto: ui/da-vinci
    def test_save(self):
        """
        Ensure that these works:
        - image.save(filename='alice.jpg')
        - image.save(file=<File-Like Object>)
        - image.filename = 'bob.jpg'; image.save()
        """
        image = images.from_file('tests/10x10.jpg')
        self.assertEqual(image._format, 'JPEG')
        new_filename = 'tests/save.jpg'
        image.save(filename=new_filename)
        self.assertEqual(image.filename, new_filename)
        self.assertTrue(os.path.exists(new_filename))
        os.remove(new_filename)

        # Ensure image can be saved to a file like object
        file_like_object = io.BytesIO()
        self.assertFalse(file_like_object.getvalue())
        image.save(file=file_like_object)
        self.assertTrue(file_like_object.getvalue())

        new_filename = 'tests/save2.jpg'
        image.filename = new_filename
        image.save()
        self.assertTrue(os.path.exists(new_filename))
        os.remove(new_filename)
Ejemplo n.º 3
0
def process(file, size):
    """
    Process an image through its defined processors
    params :file: filename or file-like object
    params :size: string for size defined in settings
    return a ContentFile
    """
    from . import conf
    # open image in piccaso
    raw_image = images.from_file(file)

    # run through all processors, if defined
    size_dict = conf.SIZES[size]

    # Format image if FORMAT defined in settings
    if 'FORMAT' in size_dict:
        raw_image.format = size_dict['FORMAT']

    for processor in size_dict['PROCESSORS']:
        raw_image = processor['processor'](raw_image, **processor['kwargs'])

    # write to Content File
    image_io = io.BytesIO()
    raw_image.save(file=image_io)
    image_file = ContentFile(image_io.getvalue())

    return image_file
Ejemplo n.º 4
0
 def test_get_filename(self):
     # get_filename return its original filename if there's no changes
     image = images.from_file('tests/10x20.jpg')
     self.assertEqual(image.get_filename(), 'tests/10x20.jpg')
     # get_filename returns the right filename if format is changed
     image.format = 'png'
     self.assertEqual(image.get_filename(), 'tests/10x20.png')
     # get_filename falls back to self.name
     image.filename = None
     self.assertEqual(image.get_filename(), '10x20.png')
     # get_filename returns the right filename if format is changed (webp)
     image = images.from_file('tests/10x20.jpg')
     image.format = 'webp'
     self.assertEqual(image.get_filename(), 'tests/10x20.webp')
     # get_filename falls back to self.name (webp)
     image.filename = None
     self.assertEqual(image.get_filename(), '10x20.webp')
Ejemplo n.º 5
0
 def test_format_getter_setter(self):
     image = images.from_file('tests/10x20.jpg')
     image.format = 'JPG'
     self.assertEqual(image.format, 'JPEG')
     image.format = 'png'
     self.assertEqual(image.format, 'PNG')
     image.format = "webp"
     self.assertEqual(image.format, 'WEBP')
Ejemplo n.º 6
0
Archivo: tests.py Proyecto: ui/da-vinci
 def test_get_filename(self):
     # get_filename return its original filename if there's no changes
     image = images.from_file('tests/10x20.jpg')
     self.assertEqual(image.get_filename(), 'tests/10x20.jpg')
     # get_filename returns the right filename if format is changed
     image.format = 'png'
     self.assertEqual(image.get_filename(), 'tests/10x20.png')
     # get_filename falls back to self.name
     image.filename = None
     self.assertEqual(image.get_filename(), '10x20.png')
Ejemplo n.º 7
0
Archivo: tests.py Proyecto: ui/da-vinci
 def test_rotate(self):
     image = images.from_file('tests/10x20.jpg')
     self.assertEqual(image.width, 10)
     self.assertEqual(image.height, 20)
     image.rotate(90)
     self.assertEqual(image.width, 20)
     self.assertEqual(image.height, 10)
     image.rotate(-90)
     self.assertEqual(image.width, 10)
     self.assertEqual(image.height, 20)
Ejemplo n.º 8
0
 def test_rotate(self):
     image = images.from_file('tests/10x20.jpg')
     self.assertEqual(image.width, 10)
     self.assertEqual(image.height, 20)
     image.rotate(90)
     self.assertEqual(image.width, 20)
     self.assertEqual(image.height, 10)
     image.rotate(-90)
     self.assertEqual(image.width, 10)
     self.assertEqual(image.height, 20)
Ejemplo n.º 9
0
Archivo: tests.py Proyecto: ui/da-vinci
    def test_quality(self):
        # Setting quality parameter shouldn't mess up image.save
        image = images.from_file('tests/10x20.jpg')
        new_filename = 'tests/save2.jpg'
        image.quality = 85
        image.save(new_filename)
        os.remove(image.filename)

        image.format = 'png'
        image.save(new_filename)
        os.remove(image.filename)
Ejemplo n.º 10
0
    def test_quality(self):
        # Setting quality parameter shouldn't mess up image.save
        image = images.from_file('tests/10x20.jpg')
        new_filename = 'tests/save2.jpg'
        image.quality = 85
        image.save(new_filename)
        os.remove(image.filename)

        image.format = 'png'
        image.save(new_filename)
        os.remove(image.filename)
Ejemplo n.º 11
0
def add_watermark(image, **kwargs):
    watermark_path = kwargs["watermark_path"]
    watermark_image = images.from_file(watermark_path)
    pil_image = image.get_pil_image()
    watermark_pil_image = watermark_image.get_pil_image()

    if watermark_pil_image.size != pil_image.size:
        # TODO: parse watermark dynamically based on ratio
        raise ValueError(
            "Watermark image should have the same dimension as image")

    if watermark_image.format != "PNG" or watermark_pil_image.mode != "RGBA":
        raise ValueError("Watermark must be PNG and containts alpha")

    pil_image.paste(watermark_pil_image, (0, 0), watermark_pil_image)
    image.set_pil_image(pil_image)

    return image
Ejemplo n.º 12
0
    def test_save(self):
        """
        Ensure that these works:
        - image.save(filename='alice.jpg')
        - image.filename = 'bob.jpg'; image.save()
        """
        image = images.from_file('tests/10x10.jpg')
        self.assertEqual(image._format, 'JPEG')
        new_filename = 'tests/save.jpg'
        image.save(new_filename)
        self.assertEqual(image.filename, new_filename)
        self.assertTrue(os.path.exists(new_filename))
        os.remove(new_filename)

        new_filename = 'tests/save2.jpg'
        image.filename = new_filename
        image.save()
        self.assertTrue(os.path.exists(new_filename))
        os.remove(new_filename)
Ejemplo n.º 13
0
def process(file, size):
    """
    Process an image through its defined processors
    params :file: filename or file-like object
    params :size: string for size defined in settings
    return a ContentFile
    """
    from . import conf
    # open image in piccaso
    raw_image = images.from_file(file)

    # run through all processors, if defined
    size_dict = conf.SIZES[size]
    for processor in size_dict.get('processors'):
        raw_image = processor(raw_image, **size_dict)

    # write to Content File
    image_io = io.BytesIO()
    raw_image.save(file=image_io)
    image_file = ContentFile(image_io.getvalue())

    return image_file
Ejemplo n.º 14
0
    def test_add_watermark(self):
        image_path = 'thumbnails/tests/tests.png'
        watermark_path = os.path.join(TemporaryStorage().temporary_location,
                                      "test_watermark.png")
        original_image_path = os.path.join(
            TemporaryStorage().temporary_location, "test_bg.png")

        # different size
        original_image_file = images.from_file(image_path)
        original_image = original_image_file.get_pil_image()
        converted_image = original_image.resize((300, 300))
        converted_image.save(original_image_path)
        original_image_file.set_pil_image(converted_image)

        watermark_image = Image.open(image_path)
        converted_watermark = watermark_image.resize((200, 200))
        converted_watermark.save(watermark_path)

        kwargs = {"watermark_path": watermark_path}
        self.assertRaises(ValueError, add_watermark, original_image_file,
                          **kwargs)

        converted_image = original_image.resize((200, 200))
        converted_image.save(original_image_path)
        original_image_file.set_pil_image(converted_image)

        # not rgba
        converted_watermark = converted_watermark.convert("RGB")
        converted_watermark.save(watermark_path)

        self.assertRaises(ValueError, add_watermark, original_image_file,
                          **kwargs)

        converted_watermark = converted_watermark.convert("RGBA")
        converted_watermark.save(watermark_path)

        # no error raised
        add_watermark(original_image_file, **kwargs)
Ejemplo n.º 15
0
Archivo: tests.py Proyecto: ui/da-vinci
 def test_format_getter_setter(self):
     image = images.from_file('tests/10x20.jpg')
     image.format = 'JPG'
     self.assertEqual(image.format, 'JPEG')
     image.format = 'png'
     self.assertEqual(image.format, 'PNG')