File: transform.rst

package info (click to toggle)
wand 0.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 13,812 kB
  • sloc: python: 14,250; makefile: 113
file content (170 lines) | stat: -rw-r--r-- 4,602 bytes parent folder | download | duplicates (4)
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