Source code for mg.utils.photo.resizer.base
# MG_GPL_HEADER_BEGIN
#
# This file is part of Media Gallery, GNU GPLv2.
#
# Media Gallery is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# Media Gallery is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Media Gallery; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#
# MG_GPL_HEADER_END
__author__ = "Media Gallery contributors <mg@lists.ssji.net>"
__copyright__ = "(c) 2010"
__credits__ = ["Dimitri Refauvelet", "Nicolas Pouillon"]
__all__ = ["ResizerBase"]
class ResizerBase:
[docs] """
ResizerBase is a tool to resize images in an automated way. Whatever
the parameters, aspect ratio of image wont be modified, therefore
image wont be deformed.
"""
LETTERBOX = 1
"""
Make the output image contain the whole input image, adding black
borders if necessary
"""
PAN_SCAN = 2
"""
Fill the whole output image size with input image, fitting the
shortest side of the image. Longest side of the input image may be
partly discarded.
"""
SCALE = 3
"""
Scale input image to fit in the output bounding box. Resulting
image size may be smaller than given output size.
"""
def __init__(self, **params):
"""
Creates a new ResizerBase. This may initialize global states.
:param params: Parameters passed to set_output_size verbatim.
"""
defaults = dict(
size = (100, 100),
mode = self.SCALE,
)
defaults.update(params)
self.set_output_size(**defaults)
def set_output_size(self, size, mode):
[docs] """
Sets the output parameters
:param size: Output size
:param mode: Mode of resizing, in ``LETTERBOX``, ``PAN_SCAN``
or ``SCALE``.
"""
def resize(self,
[docs] output_filename, input_filename,
center = None, rot_count = 0):
"""
Opens the given file as source image to resize, and
save its resized version according to parameters.
:param output_filename: Path to an image file to save
resized version to
:param input_filename: Path to an image file to open
:param center: Optional coords of center of interest of image.
If ommitted, image is centered normally. Only
relevant for ``PAN_SCAN`` mode. See
:ref:`fitting-modes` for more information.
:param rot_count: Count of 90-degree rotations to apply to
image, clockwise. This transformation
changes nothing to the output image aspect.
Rotation is achived before fitting bounding
boxes.
"""