1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
Transformation
==============
.. note::
The image :file:`transform.jpg` used in this docs is taken by
`Megan Trace`__, and licensed under `CC BY-NC 2.0`__.
It can be found the `original photography from Flickr`__.
__ http://megantracephoto.tumblr.com/
__ http://creativecommons.org/licenses/by-nc/2.0/deed.en
__ http://www.flickr.com/photos/megantrace/6234830561/
.. _enhance:
Enhance
-------
.. versionadded:: 0.5.0
Reduce the noise of an image by applying an auto-filter. Also see
:ref:`despeckle`.
.. code::
from wand.image import Image
with Image(filename="hummingbird.jpg") as left:
with left.clone() as right:
right.enhance()
left.extent(width=left.width*2)
left.composite(right, top=0, left=right.width)
left.save(filename="hummingbird-enhance.jpg")
.. image:: ../_images/hummingbird-enhance.jpg
:alt: Hummingbird - Enhance
.. _flip_flop:
Flip and flop
-------------
.. versionadded:: 0.3.0
You can make a mirror image by reflecting the pixels around the central
x- or y-axis. For example, where the given image :file:`transform.jpg`:
.. image:: ../_images/transform.jpg
:alt: transform.jpg
The following code flips the image using :meth:`Image.flip()
<wand.image.BaseImage.flip>` method::
from wand.image import Image
with Image(filename='transform.jpg') as image:
with image.clone() as flipped:
flipped.flip()
flipped.save(filename='transform-flipped.jpg')
The image :file:`transform-flipped.jpg` generated by the above code looks like:
.. image:: ../_images/transform-flipped.jpg
:alt: transform-flipped.jpg
As like :meth:`~wand.image.BaseImage.flip()`,
:meth:`~wand.image.BaseImage.flop()` does the same thing except it doesn't
make a vertical mirror image but horizontal::
from wand.image import Image
with Image(filename='transform.jpg') as image:
with image.clone() as flopped:
flopped.flop()
flopped.save(filename='transform-flopped.jpg')
The image :file:`transform-flopped.jpg` generated by the above code looks like:
.. image:: ../_images/transform-flopped.jpg
:alt: transform-flopped.jpg
.. _rotate:
Rotation
--------
.. versionadded:: 0.1.8
:class:`~wand.image.Image` object provides a simple method to rotate images:
:meth:`~wand.image.BaseImage.rotate()`. It takes a ``degree`` which can be 0
to 359. (Actually you can pass 360, 361, or more but it will be the same to
0, 1, or more respectively.)
For example, where the given image :file:`transform.jpg`:
.. image:: ../_images/transform.jpg
:alt: transform.jpg
The below code makes the image rotated 90° to right::
from wand.image import Image
with Image(filename='transform.jpg') as image:
with image.clone() as rotated:
rotated.rotate(90)
rotated.save(filename='transform-rotated-90.jpg')
The generated image :file:`transform-rotated-90.jpg` looks like:
.. image:: ../_images/transform-rotated-90.jpg
:alt: transform-rotated-90.jpg
If ``degree`` is not multiples of 90, the optional parameter ``background``
will help (its default is transparent)::
from wand.color import Color
from wand.image import Image
with Image(filename='transform.jpg') as image:
with image.clone() as rotated:
rotated.rotate(135, background=Color('rgb(229,221,112)'))
rotated.save(filename='transform-rotated-135.jpg')
The generated image :file:`transform-rotated-135.jpg` looks like:
.. image:: ../_images/transform-rotated-135.jpg
:alt: transform-rotated-135.jpg
.. _statistic:
Statistic
---------
.. versionadded:: 0.5.3
Similar to :ref:`spread`, but replaces each pixel with the result of a
mathematical operation performed against neighboring pixel values.
The type of statistic operation can be any of the following.
- ``'gradient'``
- ``'maximum'``
- ``'mean'``
- ``'median'``
- ``'minimum'``
- ``'mode'``
- ``'nonpeak'``
- ``'root_mean_square'``
- ``'standard_deviation'``
The size neighboring pixels to evaluate can be defined by passing ``width``,
and ``height`` kwargs.
.. code::
from wand.image import Image
with Image(filename="hummingbird.jpg") as left:
with left.clone() as right:
right.statistic("median", width=8, height=5)
left.extent(width=left.width*2)
left.composite(right, top=0, left=right.width)
left.save(filename="hummingbird-statistic.jpg")
.. image:: ../_images/hummingbird-statistic.jpg
:alt: Hummingbird - Statistic
|