2012-11-27 23:31:12 +01:00
|
|
|
# -*- coding:utf-8 -*-
|
|
|
|
|
|
|
|
|
|
import os
|
2013-05-15 00:15:28 +02:00
|
|
|
import pytest
|
|
|
|
|
from PIL import Image
|
2012-11-27 23:31:12 +01:00
|
|
|
|
2013-05-15 00:15:28 +02:00
|
|
|
from sigal import init_logging
|
2014-09-15 23:59:53 +02:00
|
|
|
from sigal.image import (generate_image, generate_thumbnail, get_exif_tags,
|
|
|
|
|
get_exif_data)
|
2013-08-04 14:33:19 +02:00
|
|
|
from sigal.settings import create_settings
|
2012-11-27 23:31:12 +01:00
|
|
|
|
|
|
|
|
CURRENT_DIR = os.path.dirname(__file__)
|
2012-11-27 23:47:16 +01:00
|
|
|
TEST_IMAGE = 'exo20101028-b-full.jpg'
|
2013-05-15 00:15:28 +02:00
|
|
|
SRCFILE = os.path.join(CURRENT_DIR, 'sample', 'pictures', 'dir2', TEST_IMAGE)
|
2012-11-27 23:47:16 +01:00
|
|
|
|
|
|
|
|
|
2013-05-15 00:15:28 +02:00
|
|
|
def test_generate_image(tmpdir):
|
|
|
|
|
"Test the generate_image function."
|
2012-11-27 23:47:16 +01:00
|
|
|
|
2013-03-01 00:59:04 +01:00
|
|
|
dstfile = str(tmpdir.join(TEST_IMAGE))
|
2013-05-15 00:15:28 +02:00
|
|
|
for size in [(600, 600), (300, 200)]:
|
2013-08-04 14:33:19 +02:00
|
|
|
settings = create_settings(img_size=size, img_processor='ResizeToFill')
|
|
|
|
|
generate_image(SRCFILE, dstfile, settings)
|
2013-05-15 00:15:28 +02:00
|
|
|
im = Image.open(dstfile)
|
|
|
|
|
assert im.size == size
|
2012-11-27 23:47:16 +01:00
|
|
|
|
2013-05-15 00:15:28 +02:00
|
|
|
|
|
|
|
|
def test_generate_image_processor(tmpdir):
|
|
|
|
|
"Test generate_image with a wrong processor name."
|
|
|
|
|
|
2013-12-17 00:19:46 +01:00
|
|
|
init_logging('sigal')
|
2013-05-15 00:15:28 +02:00
|
|
|
dstfile = str(tmpdir.join(TEST_IMAGE))
|
2013-09-23 00:32:32 +02:00
|
|
|
settings = create_settings(img_size=(200, 200),
|
|
|
|
|
img_processor='WrongMethod')
|
|
|
|
|
|
2013-05-15 00:15:28 +02:00
|
|
|
with pytest.raises(SystemExit):
|
2013-08-04 14:33:19 +02:00
|
|
|
generate_image(SRCFILE, dstfile, settings)
|
2013-05-15 00:15:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_generate_thumbnail(tmpdir):
|
|
|
|
|
"Test the generate_thumbnail function."
|
|
|
|
|
|
|
|
|
|
dstfile = str(tmpdir.join(TEST_IMAGE))
|
|
|
|
|
for size in [(200, 150), (150, 200)]:
|
2013-08-04 13:57:55 +02:00
|
|
|
generate_thumbnail(SRCFILE, dstfile, size)
|
2013-05-15 00:15:28 +02:00
|
|
|
im = Image.open(dstfile)
|
|
|
|
|
assert im.size == size
|
|
|
|
|
|
|
|
|
|
for size, thumb_size in [((200, 150), (185, 150)),
|
|
|
|
|
((150, 200), (150, 122))]:
|
2013-08-04 13:57:55 +02:00
|
|
|
generate_thumbnail(SRCFILE, dstfile, size, fit=False)
|
2013-05-15 00:15:28 +02:00
|
|
|
im = Image.open(dstfile)
|
|
|
|
|
assert im.size == thumb_size
|
2013-07-31 08:33:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_exif_copy(tmpdir):
|
|
|
|
|
"Test if EXIF data can transfered copied to the resized image."
|
|
|
|
|
|
|
|
|
|
test_image = '11.jpg'
|
|
|
|
|
src_file = os.path.join(CURRENT_DIR, 'sample', 'pictures', 'dir1', 'test1',
|
|
|
|
|
test_image)
|
|
|
|
|
dst_file = str(tmpdir.join(test_image))
|
|
|
|
|
|
2013-08-04 14:33:19 +02:00
|
|
|
settings = create_settings(img_size=(300, 400), copy_exif_data=True)
|
|
|
|
|
generate_image(src_file, dst_file, settings)
|
2014-09-15 23:59:53 +02:00
|
|
|
simple = get_exif_tags(get_exif_data(dst_file))
|
2013-08-01 09:15:26 +02:00
|
|
|
assert simple['iso'] == 50
|
2013-07-31 08:33:26 +02:00
|
|
|
|
2013-08-04 14:33:19 +02:00
|
|
|
settings['copy_exif_data'] = False
|
|
|
|
|
generate_image(src_file, dst_file, settings)
|
2014-09-15 23:59:53 +02:00
|
|
|
simple = get_exif_tags(get_exif_data(dst_file))
|
2013-08-01 09:15:26 +02:00
|
|
|
assert not simple
|
2013-08-05 08:56:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_exif_gps(tmpdir):
|
|
|
|
|
"""Test reading out correct geo tags"""
|
2013-09-23 00:32:32 +02:00
|
|
|
|
2013-08-05 08:56:41 +02:00
|
|
|
test_image = 'flickr_jerquiaga_2394751088_cc-by-nc.jpg'
|
|
|
|
|
src_file = os.path.join(CURRENT_DIR, 'sample', 'pictures', 'dir1', 'test1',
|
|
|
|
|
test_image)
|
|
|
|
|
dst_file = str(tmpdir.join(test_image))
|
|
|
|
|
|
|
|
|
|
settings = create_settings(img_size=(400, 300), copy_exif_data=True)
|
|
|
|
|
generate_image(src_file, dst_file, settings)
|
2014-09-15 23:59:53 +02:00
|
|
|
simple = get_exif_tags(get_exif_data(dst_file))
|
2013-08-05 08:56:41 +02:00
|
|
|
assert 'gps' in simple
|
|
|
|
|
|
2013-09-22 15:23:11 -04:00
|
|
|
lat = 34.029167
|
|
|
|
|
lon = -116.144167
|
2013-08-05 08:56:41 +02:00
|
|
|
|
|
|
|
|
assert abs(simple['gps']['lat'] - lat) < 0.0001
|
|
|
|
|
assert abs(simple['gps']['lon'] - lon) < 0.0001
|