cpython/Doc/library/imageop.rst

108 lines
3.9 KiB
ReStructuredText
Raw Normal View History

2007-08-15 11:28:01 -03:00
:mod:`imageop` --- Manipulate raw image data
============================================
.. module:: imageop
:synopsis: Manipulate raw image data.
2008-05-11 21:08:34 -03:00
:deprecated:
Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r68133 | antoine.pitrou | 2009-01-01 16:38:03 +0100 (Thu, 01 Jan 2009) | 1 line fill in actual issue number in tests ........ r68134 | hirokazu.yamamoto | 2009-01-01 16:45:39 +0100 (Thu, 01 Jan 2009) | 2 lines Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open file with `str' filename on Windows. ........ r68141 | benjamin.peterson | 2009-01-01 17:43:12 +0100 (Thu, 01 Jan 2009) | 1 line fix highlighting ........ r68142 | benjamin.peterson | 2009-01-01 18:29:49 +0100 (Thu, 01 Jan 2009) | 2 lines welcome to 2009, Python! ........ r68145 | amaury.forgeotdarc | 2009-01-02 01:03:54 +0100 (Fri, 02 Jan 2009) | 5 lines #4801 _collections module fails to build on cygwin. _PyObject_GC_TRACK is the macro version of PyObject_GC_Track, and according to documentation it should not be used for extension modules. ........ r68146 | ronald.oussoren | 2009-01-02 11:44:46 +0100 (Fri, 02 Jan 2009) | 2 lines Fix for issue4472: "configure --enable-shared doesn't work on OSX" ........ r68148 | ronald.oussoren | 2009-01-02 11:48:31 +0100 (Fri, 02 Jan 2009) | 2 lines Forgot to add a NEWS item in my previous checkin ........ r68149 | ronald.oussoren | 2009-01-02 11:50:48 +0100 (Fri, 02 Jan 2009) | 2 lines Fix for issue4780 ........ r68159 | ronald.oussoren | 2009-01-02 15:48:17 +0100 (Fri, 02 Jan 2009) | 2 lines Fix for issue 1627952 ........ r68160 | ronald.oussoren | 2009-01-02 15:52:09 +0100 (Fri, 02 Jan 2009) | 2 lines Fix for issue r1737832 ........ r68161 | ronald.oussoren | 2009-01-02 16:00:05 +0100 (Fri, 02 Jan 2009) | 3 lines Fix for issue 1149804 ........ r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines Fix for issue 4472 is incompatible with Cygwin, this patch should fix that. ........ r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line document PyMemberDef ........ r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines #4811: fix markup glitches (mostly remains of the conversion), found by Gabriel Genellina. ........ r68172 | martin.v.loewis | 2009-01-02 21:32:55 +0100 (Fri, 02 Jan 2009) | 2 lines Issue #4075: Use OutputDebugStringW in Py_FatalError. ........ r68173 | martin.v.loewis | 2009-01-02 21:40:14 +0100 (Fri, 02 Jan 2009) | 2 lines Issue #4051: Prevent conflict of UNICODE macros in cPickle. ........ r68174 | benjamin.peterson | 2009-01-02 21:47:27 +0100 (Fri, 02 Jan 2009) | 1 line fix compilation on non-Windows platforms ........ r68179 | raymond.hettinger | 2009-01-02 22:26:45 +0100 (Fri, 02 Jan 2009) | 1 line Issue #4615. Document how to use itertools for de-duping. ........ r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines Remove useless string literal. ........ r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines Fix indentation. ........ r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines Set eol-style correctly for mp_distributing.py. ........ r68214 | georg.brandl | 2009-01-03 20:44:48 +0100 (Sat, 03 Jan 2009) | 2 lines Make indentation consistent. ........ r68215 | georg.brandl | 2009-01-03 21:15:14 +0100 (Sat, 03 Jan 2009) | 2 lines Fix role name. ........ r68217 | georg.brandl | 2009-01-03 21:30:15 +0100 (Sat, 03 Jan 2009) | 2 lines Add rstlint, a little tool to find subtle markup problems and inconsistencies in the Doc sources. ........ r68218 | georg.brandl | 2009-01-03 21:38:59 +0100 (Sat, 03 Jan 2009) | 2 lines Recognize usage of the default role. ........ r68219 | georg.brandl | 2009-01-03 21:47:01 +0100 (Sat, 03 Jan 2009) | 2 lines Fix uses of the default role. ........ r68220 | georg.brandl | 2009-01-03 21:55:06 +0100 (Sat, 03 Jan 2009) | 2 lines Remove trailing whitespace. ........ r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines Remove tabs from the documentation. ........ r68222 | georg.brandl | 2009-01-03 22:11:58 +0100 (Sat, 03 Jan 2009) | 2 lines Disable the line length checker by default. ........
2009-01-03 17:55:17 -04:00
2008-05-11 21:08:34 -03:00
.. deprecated:: 2.6
The :mod:`imageop` module has been removed in Python 3.0.
2007-08-15 11:28:01 -03:00
The :mod:`imageop` module contains some useful operations on images. It operates
on images consisting of 8 or 32 bit pixels stored in Python strings. This is
the same format as used by :func:`gl.lrectwrite` and the :mod:`imgfile` module.
The module defines the following variables and functions:
.. exception:: error
This exception is raised on all errors, such as unknown number of bits per
pixel, etc.
.. function:: crop(image, psize, width, height, x0, y0, x1, y1)
Return the selected part of *image*, which should be *width* by *height* in size
and consist of pixels of *psize* bytes. *x0*, *y0*, *x1* and *y1* are like the
:func:`gl.lrectread` parameters, i.e. the boundary is included in the new image.
The new boundaries need not be inside the picture. Pixels that fall outside the
old image will have their value set to zero. If *x0* is bigger than *x1* the
new image is mirrored. The same holds for the y coordinates.
.. function:: scale(image, psize, width, height, newwidth, newheight)
Return *image* scaled to size *newwidth* by *newheight*. No interpolation is
done, scaling is done by simple-minded pixel duplication or removal. Therefore,
computer-generated images or dithered images will not look nice after scaling.
.. function:: tovideo(image, psize, width, height)
Run a vertical low-pass filter over an image. It does so by computing each
destination pixel as the average of two vertically-aligned source pixels. The
main use of this routine is to forestall excessive flicker if the image is
displayed on a video device that uses interlacing, hence the name.
.. function:: grey2mono(image, width, height, threshold)
Convert a 8-bit deep greyscale image to a 1-bit deep image by thresholding all
the pixels. The resulting image is tightly packed and is probably only useful
as an argument to :func:`mono2grey`.
.. function:: dither2mono(image, width, height)
Convert an 8-bit greyscale image to a 1-bit monochrome image using a
(simple-minded) dithering algorithm.
.. function:: mono2grey(image, width, height, p0, p1)
Convert a 1-bit monochrome image to an 8 bit greyscale or color image. All
pixels that are zero-valued on input get value *p0* on output and all one-value
input pixels get value *p1* on output. To convert a monochrome black-and-white
image to greyscale pass the values ``0`` and ``255`` respectively.
.. function:: grey2grey4(image, width, height)
Convert an 8-bit greyscale image to a 4-bit greyscale image without dithering.
.. function:: grey2grey2(image, width, height)
Convert an 8-bit greyscale image to a 2-bit greyscale image without dithering.
.. function:: dither2grey2(image, width, height)
Convert an 8-bit greyscale image to a 2-bit greyscale image with dithering. As
for :func:`dither2mono`, the dithering algorithm is currently very simple.
.. function:: grey42grey(image, width, height)
Convert a 4-bit greyscale image to an 8-bit greyscale image.
.. function:: grey22grey(image, width, height)
Convert a 2-bit greyscale image to an 8-bit greyscale image.
.. data:: backward_compatible
If set to 0, the functions in this module use a non-backward compatible way
of representing multi-byte pixels on little-endian systems. The SGI for
which this module was originally written is a big-endian system, so setting
this variable will have no effect. However, the code wasn't originally
intended to run on anything else, so it made assumptions about byte order
which are not universal. Setting this variable to 0 will cause the byte
order to be reversed on little-endian systems, so that it then is the same as
on big-endian systems.