aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoar Wandborg <joar@wandborg.se>2013-01-22 17:55:55 +0100
committerJoar Wandborg <joar@wandborg.se>2013-01-22 23:28:17 +0100
commit7cd7db5af402f9ff9160d80da2852c9e6db60859 (patch)
tree0f2c4c7b8582571a6d47e46a03f8278f752e2324
parent0c871f81220b3d5c1700a0e4141eb7e52efc04e0 (diff)
downloadmediagoblin-7cd7db5af402f9ff9160d80da2852c9e6db60859.tar.lz
mediagoblin-7cd7db5af402f9ff9160d80da2852c9e6db60859.tar.xz
mediagoblin-7cd7db5af402f9ff9160d80da2852c9e6db60859.zip
Made the image sampling filter configurable
- Changed the default to BICUBIC instead of previous ANTIALIAS
-rw-r--r--mediagoblin/config_spec.ini4
-rw-r--r--mediagoblin/media_types/image/processing.py20
2 files changed, 23 insertions, 1 deletions
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index bee67d46..ca06cc0a 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -86,6 +86,10 @@ max_height = integer(default=640)
max_width = integer(default=180)
max_height = integer(default=180)
+[media_type:mediagoblin.media_types.image]
+# One of BICUBIC, BILINEAR
+resize_filter = string(default="BICUBIC")
+
[media_type:mediagoblin.media_types.video]
# Should we keep the original file?
keep_original = boolean(default=False)
diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py
index e6a34ca0..f5fb9a72 100644
--- a/mediagoblin/media_types/image/processing.py
+++ b/mediagoblin/media_types/image/processing.py
@@ -47,7 +47,25 @@ def resize_image(entry, filename, new_path, exif_tags, workdir, new_size,
except IOError:
raise BadMediaFail()
resized = exif_fix_image_orientation(resized, exif_tags) # Fix orientation
- resized.thumbnail(new_size, Image.ANTIALIAS)
+
+ pil_filters = {
+ 'NEAREST': Image.NEAREST,
+ 'BILINEAR': Image.BILINEAR,
+ 'BICUBIC': Image.BICUBIC,
+ 'ANTIALIAS': Image.ANTIALIAS}
+
+ filter_config = \
+ mgg.global_config['media_type:mediagoblin.media_types.image']\
+ ['resize_filter']
+
+ try:
+ resize_filter = pil_filters[filter_config.upper()]
+ except KeyError:
+ raise Exception('Filter "{0}" not found, choose one of {1}'.format(
+ unicode(filter_config),
+ u', '.join(pil_filters.keys())))
+
+ resized.thumbnail(new_size, resize_filter)
# Copy the new file to the conversion subdir, then remotely.
tmp_resized_filename = os.path.join(workdir, new_path[-1])