From ae17d254fcdfc6140af5aaefdc446614af32852c Mon Sep 17 00:00:00 2001 From: Alex Clark Date: Fri, 8 Mar 2013 09:00:23 -0500 Subject: [PATCH] Restore orig readme and add changes to history --- README.rst | 342 +++++++-- docs/CHANGES | 1767 --------------------------------------------- docs/HISTORY.txt | 1777 +++++++++++++++++++++++++++++++++++++++++++++- docs/INSTALL.txt | 185 ----- setup.py | 1 - 5 files changed, 2060 insertions(+), 2012 deletions(-) delete mode 100644 docs/CHANGES delete mode 100644 docs/INSTALL.txt diff --git a/README.rst b/README.rst index f24ec82db..c3b22dd2f 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,3 @@ - Pillow ====== @@ -42,79 +41,310 @@ Documentation The API documentation included with PIL has been converted (from HTML) to reStructured text (via pandoc) and is now `hosted by readthedocs.org `_. -.. Note:: What follows is the original PIL 1.1.7 README contents. - Python Imaging Library ====================== -Introduction ------------- +.. Note:: What follows is the original PIL 1.1.7 README contents. -The Python Imaging Library (PIL) adds image processing capabilities -to your Python environment. This library provides extensive file -format support, an efficient internal representation, and powerful -image processing capabilities. +:: -This source kit has been built and tested with Python 2.0 and newer, -on Windows, Mac OS X, and major Unix platforms. Large parts of the -library also work on 1.5.2 and 1.6. + The Python Imaging Library + $Id$ -The main distribution site for this software is: + Release 1.1.7 (November 15, 2009) - http://www.pythonware.com/products/pil/ + ==================================================================== + The Python Imaging Library 1.1.7 + ==================================================================== -That site also contains information about free and commercial support -options, PIL add-ons, answers to frequently asked questions, and more. + Contents + -------- -Development versions (alphas, betas) are available here: + + Introduction + + Support Options + - Commercial support + - Free support + + Software License + + Build instructions (all platforms) + - Additional notes for Mac OS X + - Additional notes for Windows - http://effbot.org/downloads/ + -------------------------------------------------------------------- + Introduction + -------------------------------------------------------------------- -The PIL handbook is not included in this distribution; to get the -latest version, check: + The Python Imaging Library (PIL) adds image processing capabilities + to your Python environment. This library provides extensive file + format support, an efficient internal representation, and powerful + image processing capabilities. - http://www.pythonware.com/library/ + This source kit has been built and tested with Python 2.0 and newer, + on Windows, Mac OS X, and major Unix platforms. Large parts of the + library also work on 1.5.2 and 1.6. -For installation and licensing details, see below. + The main distribution site for this software is: --------------------------------------------------------------------- -Support Options --------------------------------------------------------------------- + http://www.pythonware.com/products/pil/ -Commercial Support -~~~~~~~~~~~~~~~~~~ - -Secret Labs (PythonWare) offers support contracts for companies using -the Python Imaging Library in commercial applications, and in mission- -critical environments. The support contract includes technical support, -bug fixes, extensions to the PIL library, sample applications, and more. - -For the full story, check: - - http://www.pythonware.com/products/pil/support.htm + That site also contains information about free and commercial support + options, PIL add-ons, answers to frequently asked questions, and more. -Free Support -~~~~~~~~~~~~ + Development versions (alphas, betas) are available here: -For support and general questions on the Python Imaging Library, send -e-mail to the Image SIG mailing list: - - image-sig@python.org - -You can join the Image SIG by sending a mail to: - - image-sig-request@python.org - -Put "subscribe" in the message body to automatically subscribe to the -list, or "help" to get additional information. Alternatively, you can -send your questions to the Python mailing list, python-list@python.org, -or post them to the newsgroup comp.lang.python. DO NOT SEND SUPPORT -QUESTIONS TO PYTHONWARE ADDRESSES. + http://effbot.org/downloads/ --------------------------------------------------------------------- -Software License --------------------------------------------------------------------- + The PIL handbook is not included in this distribution; to get the + latest version, check: + + http://www.pythonware.com/library/ + http://effbot.org/books/imagingbook/ (drafts) + + + For installation and licensing details, see below. + + + -------------------------------------------------------------------- + Support Options + -------------------------------------------------------------------- + + + Commercial Support + + Secret Labs (PythonWare) offers support contracts for companies using + the Python Imaging Library in commercial applications, and in mission- + critical environments. The support contract includes technical support, + bug fixes, extensions to the PIL library, sample applications, and more. + + For the full story, check: + + http://www.pythonware.com/products/pil/support.htm + + + + Free Support + + For support and general questions on the Python Imaging Library, send + e-mail to the Image SIG mailing list: + + image-sig@python.org + + You can join the Image SIG by sending a mail to: + + image-sig-request@python.org + + Put "subscribe" in the message body to automatically subscribe to the + list, or "help" to get additional information. Alternatively, you can + send your questions to the Python mailing list, python-list@python.org, + or post them to the newsgroup comp.lang.python. DO NOT SEND SUPPORT + QUESTIONS TO PYTHONWARE ADDRESSES. + + + -------------------------------------------------------------------- + Software License + -------------------------------------------------------------------- + + The Python Imaging Library is + + Copyright (c) 1997-2009 by Secret Labs AB + Copyright (c) 1995-2009 by Fredrik Lundh + + By obtaining, using, and/or copying this software and/or its + associated documentation, you agree that you have read, understood, + and will comply with the following terms and conditions: + + Permission to use, copy, modify, and distribute this software and its + associated documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appears in all + copies, and that both that copyright notice and this permission notice + appear in supporting documentation, and that the name of Secret Labs + AB or the author not be used in advertising or publicity pertaining to + distribution of the software without specific, written prior + permission. + + SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO + THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR + ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + -------------------------------------------------------------------- + Build instructions (all platforms) + -------------------------------------------------------------------- + + For a list of changes in this release, see the CHANGES document. + + 0. If you're in a hurry, try this: + + $ tar xvfz Imaging-1.1.7.tar.gz + $ cd Imaging-1.1.7 + $ python setup.py install + + If you prefer to know what you're doing, read on. + + + 1. Prerequisites. + + If you need any of the features described below, make sure you + have the necessary libraries before building PIL. + + feature library + ----------------------------------------------------------------- + JPEG support libjpeg (6a or 6b) + + http://www.ijg.org + http://www.ijg.org/files/jpegsrc.v6b.tar.gz + ftp://ftp.uu.net/graphics/jpeg/ + + PNG support zlib (1.2.3 or later is recommended) + + http://www.gzip.org/zlib/ + + OpenType/TrueType freetype2 (2.3.9 or later is recommended) + support + http://www.freetype.org + http://freetype.sourceforge.net + + CMS support littleCMS (1.1.5 or later is recommended) + support + http://www.littlecms.com/ + + If you have a recent Linux version, the libraries provided with the + operating system usually work just fine. If some library is + missing, installing a prebuilt version (jpeg-devel, zlib-devel, + etc) is usually easier than building from source. For example, for + Ubuntu 9.10 (karmic), you can install the following libraries: + + sudo apt-get install libjpeg62-dev + sudo apt-get install zlib1g-dev + sudo apt-get install libfreetype6-dev + sudo apt-get install liblcms1-dev + + If you're using Mac OS X, you can use the 'fink' tool to install + missing libraries (also see the Mac OS X section below). + + Similar tools are available for many other platforms. + + + 2. To build under Python 1.5.2, you need to install the stand-alone + version of the distutils library: + + http://www.python.org/sigs/distutils-sig/download.html + + You can fetch distutils 1.0.2 from the Python source repository: + + svn export http://svn.python.org/projects/python/tags/Distutils-1_0_2/Lib/distutils/ + + For newer releases, the distutils library is included in the + Python standard library. + + NOTE: Version 1.1.7 is not fully compatible with 1.5.2. Some + more recent additions to the library may not work, but the core + functionality is available. + + + 3. If you didn't build Python from sources, make sure you have + Python's build support files on your machine. If you've down- + loaded a prebuilt package (e.g. a Linux RPM), you probably + need additional developer packages. Look for packages named + "python-dev", "python-devel", or similar. For example, for + Ubuntu 9.10 (karmic), use the following command: + + sudo apt-get install python-dev + + + 4. When you have everything you need, unpack the PIL distribution + (the file Imaging-1.1.7.tar.gz) in a suitable work directory: + + $ cd MyExtensions # example + $ gunzip Imaging-1.1.7.tar.gz + $ tar xvf Imaging-1.1.7.tar + + + 5. Build the library. We recommend that you do an in-place build, + and run the self test before installing. + + $ cd Imaging-1.1.7 + $ python setup.py build_ext -i + $ python selftest.py + + During the build process, the setup.py will display a summary + report that lists what external components it found. The self- + test will display a similar report, with what external components + the tests found in the actual build files: + + ---------------------------------------------------------------- + PIL 1.1.7 SETUP SUMMARY + ---------------------------------------------------------------- + *** TKINTER support not available (Tcl/Tk 8.5 libraries needed) + --- JPEG support available + --- ZLIB (PNG/ZIP) support available + --- FREETYPE support available + ---------------------------------------------------------------- + + Make sure that the optional components you need are included. + + If the build script won't find a given component, you can edit the + setup.py file and set the appropriate ROOT variable. For details, + see instructions in the file. + + If the build script finds the component, but the tests cannot + identify it, try rebuilding *all* modules: + + $ python setup.py clean + $ python setup.py build_ext -i + + + 6. If the setup.py and selftest.py commands finish without any + errors, you're ready to install the library: + + $ python setup.py install + + (depending on how Python has been installed on your machine, + you might have to log in as a superuser to run the 'install' + command, or use the 'sudo' command to run 'install'.) + + + -------------------------------------------------------------------- + Additional notes for Mac OS X + -------------------------------------------------------------------- + + On Mac OS X you will usually install additional software such as + libjpeg or freetype with the "fink" tool, and then it ends up in + "/sw". If you have installed the libraries elsewhere, you may have + to tweak the "setup.py" file before building. + + + -------------------------------------------------------------------- + Additional notes for Windows + -------------------------------------------------------------------- + + On Windows, you need to tweak the ROOT settings in the "setup.py" + file, to make it find the external libraries. See comments in the + file for details. + + Make sure to build PIL and the external libraries with the same + runtime linking options as was used for the Python interpreter + (usually /MD, under Visual Studio). + + + Note that most Python distributions for Windows include libraries + compiled for Microsoft Visual Studio. You can get the free Express + edition of Visual Studio from: + + http://www.microsoft.com/Express/ + + To build extensions using other tool chains, see the "Using + non-Microsoft compilers on Windows" section in the distutils handbook: + + http://www.python.org/doc/current/inst/non-ms-compilers.html + + For additional information on how to build extensions using the + popular MinGW compiler, see: + + http://mingw.org (compiler) + http://sebsauvage.net/python/mingw.html (build instructions) + http://sourceforge.net/projects/gnuwin32 (prebuilt libraries) -See COPYING diff --git a/docs/CHANGES b/docs/CHANGES deleted file mode 100644 index b516d32bb..000000000 --- a/docs/CHANGES +++ /dev/null @@ -1,1767 +0,0 @@ --*- coding: utf-8 -*- - -The Python Imaging Library -$Id$ - -ACKNOWLEDGEMENTS: PIL wouldn't be what it is without the help of: -David Ascher, Phil Austin, Douglas Bagnall, Larry Bates, Anthony -Baxter, William Baxter, Denis Benoit, Jan Blom, Duncan Booth, Alexey -Borzenkov, Jeff Breidenbach, Roger Burnham, Zac Burns, Gene Cash, -Kevin Cazabon, Fred Clare, Greg Coats, Chris Cogdon, Greg Couch, Bill -Crutchfield, Abel Deuring, Tim Docker, Fred Drake, Graham Dumpleton, -Matthew Ellis, Eric Etheridge, Daniel Fetchinson, Robin Friedrich, -Pier Paolo Glave, Federico Di Gregorio, Markus Gritsch, Daniel -Haertle, Greg Hamilton, Mark Hammond, Bernhard Herzog, Rob Hooft, Bob -Ippolito, Jack Jansen, Bill Janssen, Edward Jones, Richard Jones, -Håkan Karlsson, Robert Kern, David Kirtley, Bob Klimek, Matthias -Klose, Andrew Kuchling, Magnus Källström, Victor Lacina, Ben Last, -Hamish Lawson, Cesare Leonardi, Andrew MacIntyre, Jan Matejek, Naveen -Michaud-Agrawal, Gordon McMillan, Skip Montanaro, Fredrik Nehr, -Russell Nelson, Luciano Nocera, Travis Oliphant, Piet van Oostrum, -Richard Oudkerk, Paul Pharr, Andres Polit, Conrado Porto Lopes Gouvêa, -Eric Raymond, Victor Reijs, Bertil Reinhammar, Nicholas Riley, Don -Rozenberg, Toby Sargeant, Barry Scott, Les Schaffer, Joel Shprentz, -Klamer Shutte, Gene Skonicki, Niki Spahiev, D. Alan Stewart, Perry -Stoll, Paul Svensson, Ulrik Svensson, Miki Tebeka, Michael van -Tellingen, Ivan Tkatchev, Dan Torop, Adam Twardoch, Rune Uhlin, Dmitry -Vasiliev, Sasha Voynow, Charles Waldman, Collin Winter, Dan Wolfe, -Ka-Ping Yee, and many others (if your name should be on this list, let -me know.) - -*** Changes from release 1.1.6 to 1.1.7 *** - -This section may not be fully complete. For changes since this file -was last updated, see the repository revision history: - - http://bitbucket.org/effbot/pil-2009-raclette/changesets/ - -(1.1.7 final) - -+ Set GIF loop info property to the number of iterations if a NETSCAPE - loop extension is present, instead of always setting it to 1 (from - Valentino Volonghi). - -(1.1.7c1 released) - -+ Improved PNG compression (from Alexey Borzenkov). - -+ Read interlaced PNG files (from Conrado Porto Lopes Gouvêa) - -+ Added various TGA improvements from Alexey Borzenkov, including - support for specifying image orientation. - -+ Bumped block threshold to 16 megabytes, made size estimation a bit - more accurate. This speeds up allocation of large images. - -+ Fixed rounding error in ImagingDrawWideLine. - - "gormish" writes: ImagingDrawWideLine() in Draw.c has a bug in every - version I've seen, which leads to different width lines depending on - the order of the points in the line. This is especially bad at some - angles where a 'width=2' line can completely disappear. - -+ Added support for RGBA mode to the SGI module (based on code by - Karsten Hiddemann). - -+ Handle repeated IPTC tags (adapted from a patch by Eric Bruning). - - Eric writes: According to the specification, some IPTC tags can be - repeated, e.g., tag 2:25 (keywords). PIL 1.1.6 only retained the last - instance of that tag. Below is a patch to store all tags. If there are - multiple tag instances, they are stored in a (python) list. Single tag - instances remain as strings. - -+ Fixed potential crash in ImageFilter for small target images - (reported by Zac Burns and Daniel Fetchinson). - -+ Use BMP instead of JPEG as temporary show format on Mac OS X. - -+ Fixed putpixel/new for I;16 with colors > 255. - -+ Added integer power support to ImagingMath. - -+ Added limited support for I;16L mode (explicit little endian). - -+ Moved WMF support into Image.core; enable WMF rendering by default - if renderer is available. - -+ Mark the ARG plugin as obsolete. - -+ Added version query mechanism to ImageCms and ImageFont, for - debugging. - -+ Added (experimental) ImageCms function for fetching the ICC profile - for the current display (currently Windows only). - - Added HWND/HDC support to ImageCms.get_display_profile(). - -+ Added WMF renderer (Windows only). - -+ Added ImagePointHandler and ImageTransformHandler mixins; made - ImageCmsTransform work with im.point. - -+ Fixed potential endless loop in the XVThumbnail reader (from Nikolai - Ugelvik). - -+ Added Kevin Cazabon's pyCMS package. - - The C code has been moved to _imagingcms.c, the Python interface - module is installed as PIL.ImageCMS. - - Added support for in-memory ICC profiles. - - Unified buildTransform and buildTransformFromOpenProfiles. - - The profile can now be either a filename, a profile object, or a - file-like object containing an in-memory profile. - - Additional fixes from Florian Böch: - - Very nice - it just needs LCMS flags support so we can use black - point compensation and softproofing :) See attached patches. They - also fix a naming issue which could cause confusion - display - profile (ImageCms wording) actually means proof profile (lcms - wording), so I changed variable names and docstrings where - applicable. Patches are tested under Python 2.6. - -+ Improved support for layer names in PSD files (from Sylvain Baubeau) - - Sylvain writes: I needed to be able to retrieve the names of the - layers in a PSD files. But PsdImagePlugin.py didn't do the job so I - wrote this very small patch. - -+ Improved RGBA support for ImageTk for 8.4 and newer (from Con - Radchenko). - - This replaces the slow run-length based encoding model with true - compositing at the Tk level. - -+ Added support for 16- and 32-bit images to McIdas loader. - - Based on file samples and stand-alone reader code provided by Craig - Swank. - -+ Added ImagePalette support to putpalette. - -+ Fixed problem with incremental parsing of PNG files. - -+ Make selftest.py report non-zero status on failure (from Mark - Sienkiewicz) - -+ Add big endian save support and multipage infrastructure to the TIFF - writer (from Sebastian Haase). - -+ Handle files with GPS IFD but no basic EXIF IFD (reported by Kurt - Schwehr). - -+ Added zTXT support (from Andrew Kuchling via Lowell Alleman). - -+ Fixed potential infinite loop bug in ImageFont (from Guilherme Polo). - -+ Added sample ICC profiles (from Kevin Cazabon) - -+ Fixed array interface for I, F, and RGBA/RGBX images. - -+ Added Chroma subsampling support for JPEG (from Justin Huff). - - Justin writes: Attached is a patch (against PIL 1.1.6) to provide - control over the chroma subsampling done by the JPEG encoder. This - is often useful for reducing compression artifacts around edges of - clipart and text. - -+ Added USM/Gaussian Blur code from Kevin Cazabon. - -+ Fixed bug w. uninitialized image data when cropping outside the - source image. - -+ Use ImageShow to implement the Image.show method. - - Most notably, this picks the 'display' utility when available. It - also allows application code to register new display utilities via - the ImageShow registry. - -+ Release the GIL in the PNG compressor (from Michael van Tellingen). - -+ Revised JPEG CMYK handling. - - Always assume Adobe behaviour, both when reading and writing (based on - a patch by Kevin Cazabon, and test data by Tim V. and Charlie Clark, and - additional debugging by Michael van Tellingen). - -+ Support for preserving ICC profiles (by Florian Böch via Tim Hatch). - - Florian writes: - - It's a beta, so still needs some testing, but should allow you to: - - retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF. - Existing code doesn't need to be changed. - - access embedded profiles in JPEG, PNG, PSD, TIFF. - - It also includes patches for TIFF to retain IPTC, Photoshop and XMP - metadata when saving as TIFF again, read/write TIFF resolution - information correctly, and to correct inverted CMYK JPEG files. - -+ Fixed potential memory leak in median cut quantizer (from Evgeny Salmin). - -+ Fixed OverflowError when reading upside-down BMP images. - -+ Added resolution save option for PDF files. - - Andreas Kostyrka writes: I've included a patched PdfImagePlugin.py - based on 1.1.6 as included in Ubuntu, that supports a "resolution" - save option. Not great, but it makes the PDF saving more useful by - allowing PDFs that are not exactly 72dpi. - -+ Look for Tcl/Tk include files in version-specific include directory - (from Encolpe Degoute). - -+ Fixed grayscale rounding error in ImageColor.getcolor (from Tim - Hatch). - -+ Fixed calculation of mean value in ImageEnhance.Contrast (reported - by "roop" and Scott David Daniels). - -+ Fixed truetype positioning when first character has a negative left - bearing (from Ned Batchelder): - - Ned writes: In PIL 1.1.6, ImageDraw.text will position the string - incorrectly if the first character has a negative left bearing. To - see the problem, show a string like "///" in an italic font. The - first slash will be clipped at the left, and the string will be - mis-positioned. - -+ Fixed resolution unit bug in tiff reader/writer (based on code by - Florian Höch, Gary Bloom, and others). - -+ Added simple transparency support for RGB images (reported by - Sebastian Spaeth). - -+ Added support for Unicode filenames in ImageFont.truetype (from Donn - Ingle). - -+ Fixed potential crash in ImageFont.getname method (from Donn Ingle). - -+ Fixed encoding issue in PIL/WalImageFile (from Santiago M. Mola). - -*** Changes from release 1.1.5 to 1.1.6 *** - -(1.1.6 released) - -+ Fixed some 64-bit compatibility warnings for Python 2.5. - -+ Added threading support for the Sane driver (from Abel Deuring). - -(1.1.6b2 released) - -+ Added experimental "floodfill" function to the ImageDraw module - (based on code by Eric Raymond). - -+ The default arguments for "frombuffer" doesn't match "fromstring" - and the documentation; this is a bug, and will most likely be fixed - in a future version. In this release, PIL prints a warning message - instead. To silence the warning, change any calls of the form - "frombuffer(mode, size, data)" to - - frombuffer(mode, size, data, "raw", mode, 0, 1) - -+ Added "fromarray" function, which takes an object implementing the - NumPy array interface and creates a PIL Image from it. (from Travis - Oliphant). - -+ Added NumPy array interface support (__array_interface__) to the - Image class (based on code by Travis Oliphant). - - This allows you to easily convert between PIL image memories and - NumPy arrays: - - import numpy, Image - - im = Image.open('lena.jpg') - - a = numpy.asarray(im) # a is readonly - - im = Image.fromarray(a) - -+ Fixed CMYK polarity for JPEG images, by treating all images as - "Adobe CMYK" images. (thanks to Cesare Leonardi and Kevin Cazabon - for samples, debugging, and patches). - -(1.1.6b1 released) - -+ Added 'expand' option to the Image 'rotate' method. If true, the - output image is made large enough to hold the entire rotated image. - -+ Changed the ImageDraw 'line' method to always draw the last pixel in - a polyline, independent of line angle. - -+ Fixed bearing calculation and clipping in the ImageFont truetype - renderer; this could lead to clipped text, or crashes in the low- - level _imagingft module. (based on input from Adam Twardoch and - others). - -+ Added ImageQt wrapper module, for converting PIL Image objects to - QImage objects in an efficient way. - -+ Fixed 'getmodebands' to return the number of bands also for "PA" - and "LA" modes. Added 'getmodebandnames' helper that return the - band names. - -(1.1.6a2 released) - -+ Added float/double support to the TIFF loader (from Russell - Nelson). - -+ Fixed broken use of realloc() in path.c (from Jan Matejek) - -+ Added save support for Spider images (from William Baxter). - -+ Fixed broken 'paste' and 'resize' operations in pildriver - (from Bill Janssen). - -+ Added support for duplex scanning to the Sane interface (Abel - Deuring). - -(1.1.6a1 released) - -+ Fixed a memory leak in "convert(mode)", when converting from - L to P. - -+ Added pixel access object. The "load" method now returns a - access object that can be used to directly get and set pixel - values, using ordinary [x, y] notation: - - pixel = im.load() - v = pixel[x, y] - pixel[x, y] = v - - If you're accessing more than a few pixels, this is a lot - faster than using getpixel/putpixel. - -+ Fixed building on Cygwin (from Miki Tebeka). - -+ Fixed "point(callable)" on unloaded images (reported by Håkan - Karlsson). - -+ Fixed size bug in ImageWin.ImageWindow constructor (from Victor - Reijs) - -+ Fixed ImageMath float() and int() operations for Python 2.4 - (reported by Don Rozenberg). - -+ Fixed "RuntimeError: encoder error -8 in tostring" problem for - wide "RGB", "I", and "F" images. - -+ Fixed line width calculation. - -(1.1.6a0 released) - -+ Fixed byte order issue in Image.paste(ink) (from Ka-Ping Yee). - -+ Fixed off-by-0.5 errors in the ANTIALIAS code (based on input - from Douglas Bagnall). - -+ Added buffer interface support to the Path constructor. If - a buffer is provided, it is assumed to contain a flat array - of float coordinates (e.g. array.array('f', seq)). - -+ Added new ImageMath module. - -+ Fixed ImageOps.equalize when used with a small number of distinct - values (reported by David Kirtley). - -+ Fixed potential integer division in PSDraw.image (from Eric Etheridge). - -*** Changes from release 1.1 to 1.1.5 *** - -(1.1.5c2 and 1.1.5 final released) - -+ Added experimental PERSPECTIVE transform method (from Jeff Breiden- - bach). - -(1.1.5c1 released) - -+ Make sure "thumbnail" never generates zero-wide or zero-high images - (reported by Gene Skonicki) - -+ Fixed a "getcolors" bug that could result in a zero count for some - colors (reported by Richard Oudkerk). - -+ Changed default "convert" palette to avoid "rounding errors" when - round-tripping white source pixels (reported by Henryk Gerlach and - Jeff Epler). - -(1.1.5b3 released) - -+ Don't crash in "quantize" method if the number of colors requested - is larger than 256. This release raises a ValueError exception; - future versions may return a mode "RGB" image instead (reported - by Richard Oudkerk). - -+ Added WBMP read/write support (based on code by Duncan Booth). - -(1.1.5b2 released) - -+ Added DPI read/write support to the PNG codec. The decoder sets - the info["dpi"] attribute for PNG files with appropriate resolution - settings. The encoder uses the "dpi" option (based on code by Niki - Spahiev). - -+ Added limited support for "point" mappings from mode "I" to mode "L". - Only 16-bit values are supported (other values are clipped), the lookup - table must contain exactly 65536 entries, and the mode argument must be - set to "L". - -+ Added support for Mac OS X icns files (based on code by Bob Ippolito). - -+ Added "ModeFilter" support to the ImageFilter module. - -+ Added support for Spider images (from William Baxter). See the - comments in PIL/SpiderImagePlugin.py for more information on this - format. - -(1.1.5b1 released) - -+ Added new Sane release (from Ralph Heinkel). See the Sane/README - and Sane/CHANGES files for more information. - -+ Added experimental PngInfo chunk container to the PngImageFile - module. This can be used to add arbitrary chunks to a PNG file. - Create a PngInfo instance, use "add" or "add_text" to add chunks, - and pass the instance as the "pnginfo" option when saving the - file. - -+ Added "getpalette" method. This returns the palette as a list, - or None if the image has no palette. To modify the palette, use - "getpalette" to fetch the current palette, modify the list, and - put it back using "putpalette". - -+ Added optional flattening to the ImagePath "tolist" method. - tolist() or tolist(0) returns a list of 2-tuples, as before. - tolist(1) returns a flattened list instead. - -(1.1.5a5 released) - -+ Fixed BILINEAR/BICUBIC/ANTIALIAS filtering for mode "LA". - -+ Added "getcolors()" method. This is similar to the existing histo- - gram method, but looks at color values instead of individual layers, - and returns an unsorted list of (count, color) tuples. - - By default, the method returns None if finds more than 256 colors. - If you need to look for more colors, you can pass in a limit (this - is used to allocate internal tables, so you probably don't want to - pass in too large values). - -+ Build improvements: Fixed building under AIX, improved detection of - FreeType2 and Mac OS X framework libraries, and more. Many thanks - to everyone who helped test the new "setup.py" script! - -(1.1.5a4 released) - -+ The "save" method now looks for a file format driver before - creating the file. - -+ Don't use antialiased truetype fonts when drawing in mode "P", "I", - and "F" images. - -+ Rewrote the "setup.py" file. The new version scans for available - support libraries, and configures both the libImaging core library - and the bindings in one step. - - To use specific versions of the libraries, edit the ROOT variables - in the setup.py file. - -+ Removed threaded "show" viewer; use the old "show" implementation - instead (Windows). - -+ Added deprecation warnings to Image.offset, ImageDraw.setink, and - ImageDraw.setfill. - -+ Added width option to ImageDraw.line(). The current implementation - works best for straight lines; it does not support line joins, so - polylines won't look good. - -+ ImageDraw.Draw is now a factory function instead of a class. If - you need to create custom draw classes, inherit from the ImageDraw - class. All other code should use the factory function. - -+ Fixed loading of certain PCX files (problem reported by Greg - Hamilton, who also provided samples). - -+ Changed _imagingft.c to require FreeType 2.1 or newer. The - module can still be built with earlier versions; see comments - in _imagingft.c for details. - -(1.1.5a3 released) - -+ Added 'getim' method, which returns a PyCObject wrapping an - Imaging pointer. The description string is set to IMAGING_MAGIC. - See Imaging.h for pointer and string declarations. - -+ Fixed reading of TIFF JPEG images (problem reported by Ulrik - Svensson). - -+ Made ImageColor work under Python 1.5.2 - -+ Fixed division by zero "equalize" on very small images (from - Douglas Bagnall). - -(1.1.5a2 released) - -+ The "paste" method now supports the alternative "paste(im, mask)" - syntax (in this case, the box defaults to im's bounding box). - -+ The "ImageFile.Parser" class now works also for PNG files with - more than one IDAT block. - -+ Added DPI read/write to the TIFF codec, and fixed writing of - rational values. The decoder sets the info["dpi"] attribute - for TIFF files with appropriate resolution settings. The - encoder uses the "dpi" option. - -+ Disable interlacing for small (or narrow) GIF images, to - work around what appears to be a hard-to-find bug in PIL's - GIF encoder. - -+ Fixed writing of mode "P" PDF images. Made mode "1" PDF - images smaller. - -+ Made the XBM reader a bit more robust; the file may now start - with a few whitespace characters. - -+ Added support for enhanced metafiles to the WMF driver. The - separate PILWMF kit lets you render both placeable WMF files - and EMF files as raster images. See - - http://effbot.org/downloads#pilwmf - -(1.1.5a1 released) - -+ Replaced broken WMF driver with a WMF stub plugin (see below). - -+ Fixed writing of mode "1", "L", and "CMYK" PDF images (based on - input from Nicholas Riley and others). - -+ Fixed adaptive palette conversion for zero-width or zero-height - images (from Chris Cogdon) - -+ Fixed reading of PNG images from QuickTime 6 (from Paul Pharr) - -+ Added support for StubImageFile plugins, including stub plugins - for BUFR, FITS, GRIB, and HDF5 files. A stub plugin can identify - a given file format, but relies on application code to open and - save files in that format. - -+ Added optional "encoding" argument to the ImageFont.truetype - factory. This argument can be used to specify non-Unicode character - maps for fonts that support that. For example, to draw text using - the Microsoft Symbol font, use: - - font = ImageFont.truetype("symbol.ttf", 16, encoding="symb") - draw.text((0, 0), unichr(0xF000 + 0xAA)) - - (note that the symbol font uses characters in the 0xF000-0xF0FF - range) - - Common encodings are "unic" (Unicode), "symb" (Microsoft Symbol), - "ADOB" (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple - Roman). See the FreeType documentation for more information. - -+ Made "putalpha" a bit more robust; you can now attach an alpha - layer to a plain "L" or "RGB" image, and you can also specify - constant alphas instead of alpha layers (using integers or colour - names). - -+ Added experimental "LA" mode support. - - An "LA" image is an "L" image with an attached transparency layer. - Note that support for "LA" is not complete; some operations may - fail or produce unexpected results. - -+ Added "RankFilter", "MinFilter", "MedianFilter", and "MaxFilter" - classes to the ImageFilter module. - -+ Improved support for applications using multiple threads; PIL - now releases the global interpreter lock for many CPU-intensive - operations (based on work by Kevin Cazabon). - -+ Ignore Unicode characters in the PCF loader (from Andres Polit) - -+ Fixed typo in OleFileIO.loadfat, which could affect loading of - FlashPix and Image Composer images (Daniel Haertle) - -+ Fixed building on platforms that have Freetype but don't have - Tcl/Tk (Jack Jansen, Luciano Nocera, Piet van Oostrum and others) - -+ Added EXIF GPSInfo read support for JPEG files. To extract - GPSInfo information, open the file, extract the exif dictionary, - and check for the key 0x8825 (GPSInfo). If present, it contains - a dictionary mapping GPS keys to GPS values. For a list of keys, - see the EXIF specification. - - The "ExifTags" module contains a GPSTAGS dictionary mapping GPS - tags to tag names. - -+ Added DPI read support to the PCX and DCX codecs (info["dpi"]). - -+ The "show" methods now uses a built-in image viewer on Windows. - This viewer creates an instance of the ImageWindow class (see - below) and keeps it running in a separate thread. NOTE: This - was disabled in 1.1.5a4. - -+ Added experimental "Window" and "ImageWindow" classes to the - ImageWin module. These classes allow you to create a WCK-style - toplevel window, and use it to display raster data. - -+ Fixed some Python 1.5.2 issues (to build under 1.5.2, use the - Makefile.pre.in/Setup.in approach) - -+ Added support for the TIFF FillOrder tag. PIL can read mode "1", - "L", "P" and "RGB" images with non-standard FillOrder (based on - input from Jeff Breidenbach). - -(1.1.4 final released) - -+ Fixed ImageTk build problem on Unix. - -(1.1.4b2 released) - -+ Improved building on Mac OS X (from Jack Jansen). - -+ Improved building on Windows with MinGW (from Klamer Shutte). - -+ If no font is specified, ImageDraw now uses the embedded default - font. Use the "load" or "truetype" methods to load a real font. - -+ Added embedded default font to the ImageFont module (currently - an 8-pixel Courier font, taken from the X window distribution). - -(1.1.4b1 released) - -+ Added experimental EXIF support for JPEG files. To extract EXIF - information from a JPEG file, open the file as usual, and call the - "_getexif" method. If successful, this method returns a dictionary - mapping EXIF TIFF tags to values. If the file does not contain EXIF - data, the "_getexif" method returns None. - - The "ExifTags" module contains a dictionary mapping tags to tag - names. - - This interface will most likely change in future versions. - -+ Fixed a bug when using the "transparency" option with the GIF - writer. - -+ Added limited support for "bitfield compression" in BMP files - and DIB buffers, for 15-bit, 16-bit, and 32-bit images. This - also fixes a problem with ImageGrab module when copying screen- - dumps from the clipboard on 15/16/32-bit displays. - -+ Added experimental WAL (Quake 2 textures) loader. To use this - loader, import WalImageFile and call the "open" method in that - module. - -(1.1.4a4 released) - -+ Added updated SANE driver (Andrew Kuchling, Abel Deuring) - -+ Use Python's "mmap" module on non-Windows platforms to read some - uncompressed formats using memory mapping. Also added a "frombuffer" - function that allows you to access the contents of an existing string - or buffer object as if it were an image object. - -+ Fixed a memory leak that could appear when processing mode "P" - images (from Pier Paolo Glave) - -+ Ignore Unicode characters in the BDF loader (from Graham Dumpleton) - -(1.1.4a3 released; windows only) - -+ Added experimental RGBA-on-RGB drawing support. To use RGBA - colours on an RGB image, pass "RGBA" as the second string to - the ImageDraw.Draw constructor. - -+ Added support for non-ASCII strings (Latin-1) and Unicode - to the truetype font renderer. - -+ The ImageWin "Dib" object can now be constructed directly from - an image object. - -+ The ImageWin module now allows you use window handles as well - as device contexts. To use a window handle, wrap the handle in - an ImageWin.HWND object, and pass in this object instead of the - device context. - -(1.1.4a2 released) - -+ Improved support for 16-bit unsigned integer images (mode "I;16"). - This includes TIFF reader support, and support for "getextrema" - and "point" (from Klamer Shutte). - -+ Made the BdfFontFile reader a bit more robust (from Kevin Cazabon - and Dmitry Vasiliev) - -+ Changed TIFF writer to always write Compression tag, even when - using the default compression (from Greg Couch). - -+ Added "show" support for Mac OS X (from Dan Wolfe). - -+ Added clipboard support to the "ImageGrab" module (Windows only). - The "grabclipboard" function returns an Image object, a list of - filenames (not in 1.1.4), or None if neither was found. - -(1.1.4a1 released) - -+ Improved support for drawing RGB data in palette images. You can - now use RGB tuples or colour names (see below) when drawing in a - mode "P" image. The drawing layer automatically assigns color - indexes, as long as you don't use more than 256 unique colours. - -+ Moved self test from MiniTest/test.py to ./selftest.py. - -+ Added support for CSS3-style color strings to most places that - accept colour codes/tuples. This includes the "ImageDraw" module, - the Image "new" function, and the Image "paste" method. - - Colour strings can use one of the following formats: "#f00", - "#ff0000", "rgb(255,0,0)", "rgb(100%,0%,0%)", "hsl(0, 100%, 50%)", - or "red" (most X11-style colour names are supported). See the - documentation for the "ImageColor" module for more information. - -+ Fixed DCX decoder (based on input from Larry Bates) - -+ Added "IptcImagePlugin.getiptcinfo" helper to extract IPTC/NAA - newsphoto properties from JPEG, TIFF, or IPTC files. - -+ Support for TrueType/OpenType fonts has been added to - the standard distribution. You need the freetype 2.0 - library. - -+ Made the PCX reader a bit more robust when reading 2-bit - and 4-bit PCX images with odd image sizes. - -+ Added "Kernel" class to the ImageFilter module. This class - allows you to filter images with user-defined 3x3 and 5x5 - convolution kernels. - -+ Added "putdata" support for mode "I", "F" and "RGB". - -+ The GIF writer now supports the transparency option (from - Denis Benoit). - -+ A HTML version of the module documentation is now shipped - with the source code distribution. You'll find the files in - the Doc subdirectory. - -+ Added support for Palm pixmaps (from Bill Janssen). This - change was listed for 1.1.3, but the "PalmImagePlugin" driver - didn't make it into the distribution. - -+ Improved decoder error messages. - -(1.1.3 final released) - -+ Made setup.py look for old versions of zlib. For some back- - ground, see: http://www.gzip.org/zlib/advisory-2002-03-11.txt - -(1.1.3c2 released) - -+ Added setup.py file (tested on Unix and Windows). You still - need to build libImaging/imaging.lib in the traditional way, - but the setup.py script takes care of the rest. - - The old Setup.in/Makefile.pre.in build method is still - supported. - -+ Fixed segmentation violation in ANTIALIAS filter (an internal - buffer wasn't properly allocated). - -(1.1.3c1 released) - -+ Added ANTIALIAS downsampling filter for high-quality "resize" - and "thumbnail" operations. Also added filter option to the - "thumbnail" operation; the default value is NEAREST, but this - will most likely change in future versions. - -+ Fixed plugin loader to be more robust if the __file__ - variable isn't set. - -+ Added seek/tell support (for layers) to the PhotoShop - loader. Layer 0 is the main image. - -+ Added new (but experimental) "ImageOps" module, which provides - shortcuts for commonly used operations on entire images. - -+ Don't mess up when loading PNG images if the decoder leaves - data in the output buffer. This could cause internal errors - on some PNG images, with some versions of ZLIB. (Bug report - and patch provided by Bernhard Herzog.) - -+ Don't mess up on Unicode filenames. - -+ Don't mess up when drawing on big endian platforms. - -+ Made the TIFF loader a bit more robust; it can now read some - more slightly broken TIFF files (based on input from Ted Wright, - Bob Klimek, and D. Alan Stewart) - -+ Added OS/2 EMX build files (from Andrew MacIntyre) - -+ Change "ImageFont" to reject image files if they don't have the - right mode. Older versions could leak memory for "P" images. - (Bug reported by Markus Gritsch). - -+ Renamed some internal functions to avoid potential build - problem on Mac OS X. - -+ Added DL_EXPORT where relevant (for Cygwin, based on input - from Robert Yodlowski) - -+ (re)moved bogus __init__ call in BdfFontFile (bug spotted - by Fred Clare) - -+ Added "ImageGrab" support (Windows only) - -+ Added support for XBM hotspots (based on code contributed by - Bernhard Herzog). - -+ Added write support for more TIFF tags, namely the Artist, - Copyright, DateTime, ResolutionUnit, Software, XResolution and - YResolution tags (from Greg Couch) - -+ Added TransposedFont wrapper to ImageFont module - -+ Added "optimize" flag to GIF encoder. If optimize is present - and non-zero, PIL will work harder to create a small file. - -+ Raise "EOFError" (not IndexError) when reading beyond the - end of a TIFF sequence. - -+ Support rewind ("seek(0)") for GIF and TIFF sequences. - -+ Load grayscale GIF images as mode "L" - -+ Added DPI read/write support to the JPEG codec. The decoder - sets the info["dpi"] attribute for JPEG files with JFIF dpi - settings. The encoder uses the "dpi" option: - - im = Image.open("file.jpg") - dpi = im.info["dpi"] # raises KeyError if DPI not known - im.save("out.jpg", dpi=dpi) - - Note that PIL doesn't always preserve the "info" attribute - for normal image operations. - -(1.1.2c1 and 1.1.2 final released) - -+ Adapted to Python 2.1. Among other things, all uses of the - "regex" module has been repleased with "re". - -+ Fixed attribute error when reading large PNG files (this bug - was introduced in maintenance code released after the 1.1.1 - release) - -+ Ignore non-string objects in sys.path - -+ Fixed Image.transform(EXTENT) for negative xoffsets - -+ Fixed loading of image plugins if PIL is installed as a package. - (The plugin loader now always looks in the directory where the - Image.py module itself is found, even if that directory isn't on - the standard search path) - -+ The Png plugin has been added to the list of preloaded standard - formats - -+ Fixed bitmap/text drawing in fill mode. - -+ Fixed "getextrema" to work also for multiband images. - -+ Added transparency support for L and P images to the PNG codec. - -+ Improved support for read-only images. The "load" method now - sets the "readonly" attribute for memory-mapped images. Operations - that modifies an image in place (such as "paste" and drawing operations) - creates an in-memory copy of the image, if necessary. (before this - change, any attempt to modify a memory-mapped image resulted in a - core dump...) - -+ Added special cases for lists everywhere PIL expects a sequence. - This should speed up things like "putdata" and drawing operations. - -+ The Image.offset method is deprecated. Use the ImageChops.offset - function instead. - -+ Changed ImageChops operators to copy palette and info dictionary - from the first image argument. - -(1.1.1 released) - -+ Additional fixes for Python 1.6/2.0, including TIFF "save" bug. - -+ Changed "init" to properly load plugins when PIL is used as a - package. - -+ Fixed broken "show" method (on Unix) - -*** Changes from release 1.0 to 1.1 *** - -+ Adapted to Python 1.6 ("append" and other method changes) - -+ Fixed Image.paste when pasting with solid colour and matte - layers ("L" or "RGBA" masks) (bug reported by Robert Kern) - -+ To make it easier to distribute prebuilt versions of PIL, - the tkinit binding stuff has been moved to a separate - extension module, named "_imagingtk". - -*** Changes from release 0.3b2 to 1.0 final *** - -+ If there's no 16-bit integer (like on a Cray T3E), set - INT16 to the smallest integer available. Most of the - library works just fine anyway (from Bill Crutchfield) - -+ Tweaks to make drawing work on big-endian platforms. - -(1.0c2 released) - -+ If PIL is built with the WITH_TKINTER flag, ImageTk can - automatically hook into a standard Tkinter build. You - no longer need to build your own Tkinter to use the - ImageTk module. - - The old way still works, though. For more information, - see Tk/install.txt. - -+ Some tweaks to ImageTk to support multiple Tk interpreters - (from Greg Couch). - -+ ImageFont "load_path" now scans directory mentioned in .pth - files (from Richard Jones). - -(1.0c1 released) - -+ The TIFF plugin has been rewritten. The new plugin fully - supports all major PIL image modes (including F and I). - -+ The ImageFile module now includes a Parser class, which can - be used to incrementally decode an image file (while down- - loading it from the net, for example). See the handbook for - details. - -+ "show" now converts non-standard modes to "L" or "RGB" (as - appropriate), rather than writing weird things to disk for - "xv" to choke upon. (bug reported by Les Schaffer). - -(1.0b2 released) - -+ Major speedups for rotate, transform(EXTENT), and transform(AFFINE) - when using nearest neighbour resampling. - -+ Modified ImageDraw to be compatible with the Arrow graphics - interface. See the handbook for details. - -+ PIL now automatically loads file codecs when used as a package - (from The Dragon De Monsyne). Also included an __init__.py file - in the standard distribution. - -+ The GIF encoder has been modified to produce much smaller files. - - PIL now uses a run-length encoding method to encode GIF files. - On a random selection of GIF images grabbed from the web, this - version makes the images about twice as large as the original - LZW files, where the earlier version made them over 5 times - larger. YMMV, of course. - -+ Added PCX write support (works with "1", "P", "L", and "RGB") - -+ Added "bitmap" and "textsize" methods to ImageDraw. - -+ Improved font rendering code. Fixed a bug or two, and moved - most of the time critical stuff to C. - -+ Removed "bdf2pil.py". Use "pilfont.py" instead! - -+ Improved 16-bit support (still experimental, though). - - The following methods now support "I;16" and "I;16B" images: - "getpixel", "copy", "convert" (to and from mode "I"), "resize", - "rotate", and "transform" with nearest neighbour filters, and - "save" using the IM format. The "new" and "open" functions - also work as expected. On Windows, 16-bit files are memory - mapped. - - NOTE: ALL other operations are still UNDEFINED on 16-bit images. - -+ The "paste" method now supports constant sources. - - Just pass a colour value (a number or a tuple, depending on - the target image mode) instead of the source image. - - This was in fact implemented in an inefficient way in - earlier versions (the "paste" method generated a temporary - source image if you passed it a colour instead of an image). - In this version, this is handled on the C level instead. - -+ Added experimental "RGBa" mode support. - - An "RGBa" image is an RGBA image where the colour components - have have been premultipled with the alpha value. PIL allows - you to convert an RGBA image to an RGBa image, and to paste - RGBa images on top of RGB images. Since this saves a bunch - of multiplications and shifts, it is typically about twice - as fast an ordinary RGBA paste. - -+ Eliminated extra conversion step when pasting "RGBA" or "RGBa" - images on top of "RGB" images. - -+ Fixed Image.BICUBIC resampling for "RGB" images. - -+ Fixed PCX image file handler to properly read 8-bit PCX - files (bug introduced in 1.0b1, reported by Bernhard - Herzog) - -+ Fixed PSDraw "image" method to restore the coordinate - system. - -+ Fixed "blend" problem when applied to images that was - not already loaded (reported by Edward C. Jones) - -+ Fixed -f option to "pilconvert.py" (from Anthony Baxter) - -(1.0b1 released) - -+ Added Toby J. Sargeant's quantization package. To enable - quantization, use the "palette" option to "convert": - - imOut = im.convert("P", palette=Image.ADAPTIVE) - - This can be used with "L", "P", and "RGB" images. In this - version, dithering cannot be used with adaptive palettes. - - Note: ADAPTIVE currently maps to median cut quantization - with 256 colours. The quantization package also contains - a maximum coverage quantizer, which will be supported by - future versions of PIL. - -+ Added Eric S. Raymond's "pildriver" image calculator to the - distribution. See the docstring for more information. - -+ The "offset" method no longer dumps core if given positive - offsets (from Charles Waldman). - -+ Fixed a resource leak that could cause ImageWin to run out of - GDI resources (from Roger Burnham). - -+ Added "arc", "chord", and "pieslice" methods to ImageDraw (inspired - by code contributed by Richard Jones). - -+ Added experimental 16-bit support, via modes "I;16" (little endian - data) and "I;16B" (big endian). Only a few methods properly support - such images (see above). - -+ Added XV thumbnail file handler (from Gene Cash). - -+ Fixed BMP image file handler to handle palette images with small - palettes (from Rob Hooft). - -+ Fixed Sun raster file handler for palette images (from Charles - Waldman). - -+ Improved various internal error messages. - -+ Fixed Path constructor to handle arbitrary sequence objects. This - also affects the ImageDraw class (from Richard Jones). - -+ Fixed a bug in JpegDecode that caused PIL to report "decoder error - -2" for some progressive JPEG files (reported by Magnus Källström, - who also provided samples). - -+ Fixed a bug in JpegImagePlugin that caused PIL to hang when loading - JPEG files using 16-bit quantization tables. - -+ The Image "transform" method now supports Image.QUAD transforms. - The data argument is an 8-tuple giving the upper left, lower - left, lower right, and upper right corner of the source quadri- - lateral. Also added Image.MESH transform which takes a list - of quadrilaterals. - -+ The Image "resize", "rotate", and "transform" methods now support - Image.BILINEAR (2x2) and Image.BICUBIC (4x4) resampling filters. - Filters can be used with all transform methods. - -+ The ImageDraw "rectangle" method now includes both the right - and the bottom edges when drawing filled rectangles. - -+ The TGA decoder now works properly for runlength encoded images - which have more than one byte per pixel. - -+ "getbands" on an YCbCr image now returns ("Y", "Cb", "Cr") - -+ Some file drivers didn't handle the optional "modify" argument - to the load method. This resulted in exceptions when you used - "paste" (and other methods that modify an image in place) on a - newly opened file. - -*** Changes from release 0.2 (b5) to 0.3 (b2) *** - -(0.3b2 released) - -The test suite includes 825 individual tests. - -+ An Image "getbands" method has been added. It returns a tuple - containing the individual band names for this image. To figure - out how many bands an image has, use "len(im.getbands())". - -+ An Image "putpixel" method has been added. - -+ The Image "point" method can now be used to convert "L" images - to any other format, via a lookup table. That table should - contain 256 values for each band in the output image. - -+ Some file drivers (including FLI/FLC, GIF, and IM) accidently - overwrote the offset method with an internal attribute. All - drivers have been updated to use private attributes where - possible. - -+ The Image "histogram" method now works for "I" and "F" images. - For these modes, PIL divides the range between the min and - max values used in the image into 256 bins. You can also - pass in your own min and max values via the "extrema" option: - - h = im.histogram(extrema=(0, 255)) - -+ An Image "getextrema" method has been added. It returns the - min and max values used in the image. In this release, this - works for single band images only. - -+ Changed the PNG driver to load and save mode "I" images as - 16-bit images. When saving, values outside the range 0..65535 - are clipped. - -+ Fixed ImageFont.py to work with the new "pilfont" compiler. - -+ Added JPEG "save" and "draft" support for mode "YCbCr" images. - Note that if you save an "YCbCr" image as a JPEG file and read - it back, it is read as an RGB file. To get around this, you - can use the "draft" method: - - im = Image.open("color.jpg") - im.draft("YCbCr", im.size) - -+ Read "RGBA" TGA images. Also fixed the orientation bug; all - images should now come out the right way. - -+ Changed mode name (and internal representation) from "YCrCb" - to "YCbCr" (!) - *** WARNING: MAY BREAK EXISTING CODE *** - -(0.3b1 released) - -The test suite includes 750 individual tests. - -+ The "pilfont" package is now included in the standard PIL - distribution. The pilfont utility can be used to convert - X BDF and PCF raster font files to a format understood by - the ImageFont module. - -+ GIF files are now interlaced by default. To write a - non-interlaced file, pass interlace=0 to the "save" - method. - -+ The default string format has changed for the "fromstring" - and "tostring" methods. - *** WARNING: MAY BREAK EXISTING CODE *** - - NOTE: If no extra arguments are given, the first line in - the string buffer is the top line of the image, instead of - the bottom line. For RGB images, the string now contains - 3 bytes per pixel instead of 4. These changes were made - to make the methods compatible with the "fromstring" - factory function. - - To get the old behaviour, use the following syntax: - - data = im.tostring("raw", "RGBX", 0, -1) - im.fromstring(data, "raw", "RGBX", 0, -1) - -+ "new" no longer gives a MemoryError if the width or height - is zero (this only happened on platforms where malloc(0) - or calloc(0) returns NULL). - -+ "new" now adds a default palette object to "P" images. - -+ You can now convert directly between all modes supported by - PIL. When converting colour images to "P", PIL defaults to - a "web" palette and dithering. When converting greyscale - images to "1", PIL uses a thresholding and dithering. - -+ Added a "dither" option to "convert". By default, "convert" - uses floyd-steinberg error diffusion for "P" and "1" targets, - so this option is only used to *disable* dithering. Allowed - values are NONE (no dithering) or FLOYDSTEINBERG (default). - - imOut = im.convert("P", dither=Image.NONE) - -+ Added a full set of "I" decoders. You can use "fromstring" - (and file decoders) to read any standard integer type as an - "I" image. - -+ Added some support for "YCbCr" images (creation, conversion - from/to "L" and "RGB", IM YCC load/save) - -+ "getpixel" now works properly with fractional coordinates. - -+ ImageDraw "setink" now works with "I", "F", "RGB", "RGBA", - "RGBX", "CMYK", and "YCbCr" images. - -+ ImImagePlugin no longer attaches palettes to "RGB" images. - -+ Various minor fixes. - -(0.3a4 released) - -+ Added experimental IPTC/NAA support. - -+ Eliminated AttributeError exceptions after "crop" (from - Skip Montanaro) - -+ Reads some uncompressed formats via memory mapping (this - is currently supported on Win32 only) - -+ Fixed some last minute glitches in the last alpha release - (Types instead of types in Image.py, version numbers, etc.) - -+ Eliminated some more bogus compiler warnings. - -+ Various fixes to make PIL compile and run smoother on Macs - (from Jack Jansen). - -+ Fixed "fromstring" and "tostring" for mode "I" images. - -(0.3a3 released) - -The test suite includes 530 individual tests. - -+ Eliminated unexpected side-effect in "paste" with matte. "paste" - now works properly also if compiled with "gcc". - -+ Adapted to Python 1.5 (build issues only) - -+ Fixed the ImageDraw "point" method to draw also the last - point (!). - -+ Added "I" and "RGBX" support to Image.new. - -+ The plugin path is now properly prepended to the module search - path when a plugin module is imported. - -+ Added "draw" method to the ImageWin.Dib class. This is used by - Topaz to print images on Windows printers. - -+ "convert" now supports conversions from "P" to "1" and "F". - -+ "paste" can now take a colour instead of an image as the first argument. - The colour must match the colour argument given to the new function, and - match the mode of the target image. - -+ Fixed "paste" to allow a mask also for mode "F" images. - -+ The BMP driver now saves mode "1" images. When loading images, the mode - is set to "L" for 8-bit files with greyscale palettes, and to "P" for - other 8-bit files. - -+ The IM driver now reads and saves "1" images (file modes "0 1" or "L 1"). - -+ The JPEG and GIF drivers now saves "1" images. For JPEG, the image - is saved as 8-bit greyscale (it will load as mode "L"). For GIF, the - image will be loaded as a "P" image. - -+ Fixed a potential buffer overrun in the GIF encoder. - -(0.3a2 released) - -The test suite includes 400 individual tests. - -+ Improvements to the test suite revealed a number of minor bugs, which - are all fixed. Note that crop/paste, 32-bit ImageDraw, and ImageFont - are still weak spots in this release. - -+ Added "putpalette" method to the Image class. You can use this - to add or modify the palette for "P" and "L" images. If a palette - is added to an "L" image, it is automatically converted to a "P" - image. - -+ Fixed ImageDraw to properly handle 32-bit image memories - ("RGB", "RGBA", "CMYK", "F") - -+ Fixed "fromstring" and "tostring" not to mess up the mode attribute - in default mode. - -+ Changed ImPlatform.h to work on CRAY's (don't have one at home, so I - haven't tried it). The previous version assumed that either "short" - or "int" were 16-bit wide. PIL still won't compile on platforms where - neither "short", "int" nor "long" are 32-bit wide. - -+ Added file= and data= keyword arguments to PhotoImage and BitmapImage. - This allows you to use them as drop-in replacements for the corre- - sponding Tkinter classes. - -+ Removed bogus references to the crack coder (ImagingCrack). - -(0.3a1 released) - -+ Make sure image is loaded in "tostring". - -+ Added floating point packer (native 32-bit floats only). - -*** Changes from release 0.1b1 to 0.2 (b5) *** - -+ Modified "fromstring" and "tostring" methods to use file codecs. - Also added "fromstring" factory method to create an image directly - from data in a string. - -+ Added support for 32-bit floating point images (mode "F"). You - can convert between "L" and "F" images, and apply a subset of the - available image processing methods on the "F" image. You can also - read virtually any data format into a floating point image memory; - see the section on "Decoding Floating Point Data" in the handbook - for more information. - -(0.2b5 released; on windows only) - -+ Fixed the tobitmap() method to work properly for small bitmaps. - -+ Added RMS and standard deviation to the ImageStat.Stat class. Also - modified the constructor to take an optional feature mask, and also - to accept either an image or a list containing the histogram data. - -+ The BitmapImage code in ImageTk can now use a special bitmap - decoder, which has to be patched into Tk. See the "Tk/pilbitmap.txt" - file for details. If not installed, bitmaps are transferred to Tk as - XBM strings. - -+ The PhotoImage code in ImageTk now uses a Tcl command ("PyImagingPaste") - instead of a special image type. This gives somewhat better performance, - and also allows PIL to support transparency. - *** WARNING: TKAPPINIT MUST BE MODIFIED *** - -+ ImageTk now honours the alpha layer in RGBA images. Only fully - transparent pixels are made transparent (that is, the alpha layer - is treated as a mask). To treat the alpha laters as a matte, you - must paste the image on the background before handing it over to - ImageTk. - -+ Added McIdas reader (supports 8-bit images only). - -+ PIL now preloads drivers for BMP, GIF, JPEG, PPM, and TIFF. As - long as you only load and save these formats, you don't have to - wait for a full scan for drivers. To force scanning, call the - Image.init() function. - -+ The "seek" and "tell" methods are now always available, also for - single-frame images. - -+ Added optional mask argument to histogram method. The mask may - be an "1" or "L" image with the same size as the original image. - Only pixels where the mask is non-zero are included in the - histogram. - -+ The "paste" method now allows you to specify only the lower left - corner (a 2-tuple), instead of the full region (a 4-tuple). - -+ Reverted to old plugin scanning model; now scans all directory - names in the path when looking for plugins. - -+ Added PIXAR raster support. Only uncompressed ("dumped") RGB - images can currently be read (based on information provided - by Greg Coats). - -+ Added FlashPix (FPX) read support. Reads all pixel formats, but - only the highest resolution is read, and the viewing transform is - currently ignored. - -+ Made PNG encoding somewhat more efficient in "optimize" mode; a - bug in 0.2b4 didn't enable all predictor filters when optimized - storage were requested. - -+ Added Microsoft Image Composer (MIC) read support. When opened, - the first sprite in the file is loaded. You can use the seek method - to load additional sprites from the file. - -+ Properly reads "P" and "CMYK" PSD images. - -+ "pilconvert" no longer optimizes by default; use the -o option to - make the file as small as possible (at the expense of speed); use - the -q option to set the quality when compressing to JPEG. - -+ Fixed "crop" not to drop the palette for "P" images. - -+ Added and verified FLC support. - -+ Paste with "L" or "RGBA" alpha is now several times faster on most - platforms. - -+ Changed Image.new() to initialize the image to black, as described - in the handbook. To get an uninitialized image, use None as the - colour. - -+ Fixed the PDF encoder to produce a valid header; Acrobat no longer - complains when you load PDF images created by PIL. - -+ PIL only scans fully-qualified directory names in the path when - looking for plugins. - *** WARNING: MAY BREAK EXISTING CODE *** - -+ Faster implementation of "save" used when filename is given, - or when file object has "fileno" and "flush" methods. - -+ Don't crash in "crop" if region extends outside the source image. - -+ Eliminated a massive memory leak in the "save" function. - -+ The GIF decoder doesn't crash if the code size is set to an illegal - value. This could happen since another bug didn't handle local - palettes properly if they didn't have the same size as the - global palette (not very common). - -+ Added predictor support (TIFF 6.0 section 14) to the TIFF decoder. - -+ Fixed palette and padding problems in BMP driver. Now properly - writes "1", "L", "P" and "RGB" images. - -+ Fixed getpixel()/getdata() to return correct pixel values. - -+ Added PSD (PhotoShop) read support. Reads both uncompressed - and compressed images of most types. - -+ Added GIF write support (writes "uncompressed" GIF files only, - due to unresolvable licensing issues). The "gifmaker.py" script - can be used to create GIF animations. - -+ Reads 8-bit "L" and "P" TGA images. Also reads 16-bit "RGB" - images. - -+ Added FLI read support. This driver has only been tested - on a few FLI samples. - -+ Reads 2-bit and 4-bit PCX images. - -+ Added MSP read and write support. Both version 1 and 2 can be - read, but only version 1 (uncompressed) files are written. - -+ Fixed a bug in the FLI/FLC identification code that caused the - driver to raise an exception when parsing valid FLI/FLC files. - -+ Improved performance when loading file format plugins, and when - opening files. - -+ Added GIF animation support, via the "seek" and "tell" methods. - You can use "player.py" to play an animated GIF file. - -+ Removed MNG support, since the spec is changing faster than I - can change the code. I've added support for the experimental - ARG format instead. Contact me for more information on this - format. - -+ Added keyword options to the "save" method. The following options - are currently supported: - - format option description - -------------------------------------------------------- - JPEG optimize minimize output file at the - expense of compression speed. - - JPEG progressive enable progressive output. the - option value is ignored. - - JPEG quality set compression quality (1-100). - the default value is 75. - - JPEG smooth smooth dithered images. value - is strengh (1-100). default is - off (0). - - PNG optimize minimize output file at the - expense of compression speed. - - Expect more options in future releases. Also note that - file writers silently ignore unknown options. - -+ Plugged memory leaks in the PNG and TIFF decoders. - -+ Added PNG write support. - -+ (internal) RGB unpackers and converters now set the pad byte - to 255 (full opacity). - -+ Properly handles the "transparency" property for GIF, PNG - and XPM files. - -+ Added a "putalpha" method, allowing you to attach a "1" or "L" - image as the alpha layer to an "RGBA" image. - -+ Various improvements to the sample scripts: - - "pilconvert" Carries out some extra tricks in order to make - the resulting file as small as possible. - - "explode" (NEW) Split an image sequence into individual frames. - - "gifmaker" (NEW) Convert a sequence file into a GIF animation. - Note that the GIF encoder create "uncompressed" GIF - files, so animations created by this script are - rather large (typically 2-5 times the compressed - sizes). - - "image2py" (NEW) Convert a single image to a python module. See - comments in this script for details. - - "player" If multiple images are given on the command line, - they are interpreted as frames in a sequence. The - script assumes that they all have the same size. - Also note that this script now can play FLI/FLC - and GIF animations. - - This player can also execute embedded Python - animation applets (ARG format only). - - "viewer" Transparent images ("P" with transparency property, - and "RGBA") are superimposed on the standard Tk back- - ground. - -+ Fixed colour argument to "new". For multilayer images, pass a - tuple: (Red, Green, Blue), (Red, Green, Blue, Alpha), or (Cyan, - Magenta, Yellow, Black). - -+ Added XPM (X pixmap) read support. - -(0.2b3 released) - -+ Added MNG (multi-image network graphics) read support. "Ming" - is a proposed animation standard, based on the PNG file format. - - You can use the "player" sample script to display some flavours - of this format. The MNG standard is still under development, - as is this driver. More information, including sample files, - can be found at - -+ Added a "verify" method to images loaded from file. This method - scans the file for errors, without actually decoding the image - data, and raises a suitable exception if it finds any problems. - Currently implemented for PNG and MNG files only. - -+ Added support for interlaced GIF images. - -+ Added PNG read support -- if linked with the ZLIB compression library, - PIL reads all kinds of PNG images, except interlaced files. - -+ Improved PNG identification support -- doesn't mess up on unknown - chunks, identifies all possible PNG modes, and verifies checksum - on PNG header chunks. - -+ Added an experimental reader for placable Windows Meta Files (WMF). - This reader is still very incomplete, but it illustrates how PIL's - drawing capabilities can be used to render vector and metafile - formats. - -+ Added restricted drivers for images from Image Tools (greyscale - only) and LabEye/IFUNC (common interchange modes only). - -+ Some minor improvements to the sample scripts provided in the - "Scripts" directory. - -+ The test images have been moved to the "Images" directory. - -(0.2b2 released) -(0.2b1 released; Windows only) - -+ Fixed filling of complex polygons. The ImageDraw "line" and - "polygon" methods also accept Path objects. - -+ The ImageTk "PhotoImage" object can now be constructed directly - from an image. You can also pass the object itself to Tkinter, - instead of using the "image" attribute. Finally, using "paste" - on a displayed image automatically updates the display. - -+ The ImageTk "BitmapImage" object allows you to create transparent - overlays from 1-bit images. You can pass the object itself to - Tkinter. The constructor takes the same arguments as the Tkinter - BitmapImage class; use the "foreground" option to set the colour - of the overlay. - -+ Added a "putdata" method to the Image class. This can be used to - load a 1-layer image with data from a sequence object or a string. - An optional floating point scale and offset can be used to adjust - the data to fit into the 8-bit pixel range. Also see the "getdata" - method. - -+ Added the EXTENT method to the Image "transform" method. This can - be used to quickly crop, stretch, shrink, or mirror a subregion - from another image. - -+ Adapted to Python 1.4. - -+ Added a project makefile for Visual C++ 4.x. This allows you to - easily build a dynamically linked version of PIL for Windows 95 - and NT. - -+ A Tk "booster" patch for Windows is available. It gives dramatic - performance improvements for some displays. Has been tested with - Tk 4.2 only, but is likely to work with Tk 4.1 as well. See the Tk - subdirectory for details. - -+ You can now save 1-bit images in the XBM format. In addition, the - Image class now provides a "tobitmap" method which returns a string - containing an XBM representation of the image. Quite handy to use - with Tk. - -+ More conversions, including "RGB" to "1" and more. - -(0.2a1 released) - -+ Where earlier versions accepted lists, this version accepts arbitrary - Python sequences (including strings, in some cases). A few resource - leaks were plugged in the process. - -+ The Image "paste" method now allows the box to extend outside - the target image. The size of the box, the image to be pasted, - and the optional mask must still match. - -+ The ImageDraw module now supports filled polygons, outlined and - filled ellipses, and text. Font support is rudimentary, though. - -+ The Image "point" method now takes an optional mode argument, - allowing you to convert the image while translating it. Currently, - this can only be used to convert "L" or "P" images to "1" images - (creating thresholded images or "matte" masks). - -+ An Image "getpixel" method has been added. For single band images, - it returns the pixel value at a given position as an integer. - For n-band images, it returns an n-tuple of integers. - -+ An Image "getdata" method has been added. It returns a sequence - object representing the image as a 1-dimensional array. Only len() - and [] can be used with this sequence. This method returns a - reference to the existing image data, so changes in the image - will be immediately reflected in the sequence object. - -+ Fixed alignment problems in the Windows BMP writer. - -+ If converting an "RGB" image to "RGB" or "L", you can give a second - argument containing a colour conversion matrix. - -+ An Image "getbbox" method has been added. It returns the bounding - box of data in an image, considering the value 0 as background. - -+ An Image "offset" method has been added. It returns a new image - where the contents of the image have been offset the given distance - in X and/or Y direction. Data wraps between edges. - -+ Saves PDF images. The driver creates a binary PDF 1.1 files, using - JPEG compression for "L", "RGB", and "CMYK" images, and hex encoding - (same as for PostScript) for other formats. - -+ The "paste" method now accepts "1" masks. Zero means transparent, - any other pixel value means opaque. This is faster than using an - "L" transparency mask. - -+ Properly writes EPS files (and properly prints images to postscript - printers as well). - -+ Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR - files. Cursor animations are not supported. - -+ Fixed alignment problems in the Sun raster loader. - -+ Added "draft" and "thumbnail" methods. The draft method is used - to optimize loading of JPEG and PCD files, the thumbnail method is - used to create a thumbnail representation of an image. - -+ Added Windows display support, via the ImageWin class (see the - handbook for details). - -+ Added raster conversion for EPS files. This requires GNU or Aladdin - Ghostscript, and probably works on UNIX only. - -+ Reads PhotoCD (PCD) images. The base resolution (768x512) can be - read from a PhotoCD file. - -+ Eliminated some compiler warnings. Bindings now compile cleanly in C++ - mode. Note that the Imaging library itself must be compiled in C mode. - -+ Added "bdf2pil.py", which converts BDF fonts into images with associated - metrics. This is definitely work in progress. For info, see description - in script for details. - -+ Fixed a bug in the "ImageEnhance.py" module. - -+ Fixed a bug in the netpbm save hack in "GifImagePlugin.py" - -+ Fixed 90 and 270 degree rotation of rectangular images. - -+ Properly reads 8-bit TIFF palette-color images. - -+ Reads plane separated RGB and CMYK TIFF images. - -+ Added driver debug mode. This is enabled by setting Image.DEBUG - to a non-zero value. Try the -D option to "pilfile.py" and see what - happens. - -+ Don't crash on "atend" constructs in PostScript files. - -+ Only the Image module imports _imaging directly. Other modules - should refer to the binding module as "Image.core". - -*** Changes from release 0.0 to 0.1 (b1) *** - -+ A handbook is available (distributed separately). - -+ The coordinate system is changed so that (0,0) is now located - in the upper left corner. This is in compliancy with ISO 12087 - and 90% of all other image processing and graphics libraries. - -+ Modes "1" (bilevel) and "P" (palette) have been introduced. Note - that bilevel images are stored with one byte per pixel. - -+ The Image "crop" and "paste" methods now accepts None as the - box argument, to refer to the full image (self, that is). - -+ The Image "crop" method now works properly. - -+ The Image "point" method is now available. You can use either a - lookup table or a function taking one argument. - -+ The Image join function has been renamed to "merge". - -+ An Image "composite" function has been added. It is identical - to copy() followed by paste(mask). - -+ An Image "eval" function has been added. It is currently identical - to point(function); that is, only a single image can be processed. - -+ A set of channel operations has been added. See the "ImageChops" - module, test_chops.py, and the handbook for details. - -+ Added the "pilconvert" utility, which converts image files. Note - that the number of output formats are still quite restricted. - -+ Added the "pilfile" utility, which quickly identifies image files - (without loading them, in most cases). - -+ Added the "pilprint" utility, which prints image files to Postscript - printers. - -+ Added a rudimentary version of the "pilview" utility, which is - simple image viewer based on Tk. Only File/Exit and Image/Next - works properly. - -+ An interface to Tk has been added. See "Lib/ImageTk.py" and README - for details. - -+ An interface to Jack Jansen's Img library has been added (thanks to - Jack). This allows you to read images through the Img extensions file - format handlers. See the file "Lib/ImgExtImagePlugin.py" for details. - -+ Postscript printing is provided through the PSDraw module. See the - handbook for details. diff --git a/docs/HISTORY.txt b/docs/HISTORY.txt index fd517d5d0..2558efa4a 100644 --- a/docs/HISTORY.txt +++ b/docs/HISTORY.txt @@ -1,6 +1,5 @@ - -Changelog -========= +Changelog (Pillow) +================== 2.0.0 (2013-03-14) ------------------ @@ -114,3 +113,1775 @@ Changelog - Forked PIL based on Hanno Schlichting's re-packaging (http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz) + +.. Note:: What follows is the original PIL 1.1.7 release changelog + +:: + + -*- coding: utf-8 -*- + + The Python Imaging Library + $Id$ + + ACKNOWLEDGEMENTS: PIL wouldn't be what it is without the help of: + David Ascher, Phil Austin, Douglas Bagnall, Larry Bates, Anthony + Baxter, William Baxter, Denis Benoit, Jan Blom, Duncan Booth, Alexey + Borzenkov, Jeff Breidenbach, Roger Burnham, Zac Burns, Gene Cash, + Kevin Cazabon, Fred Clare, Greg Coats, Chris Cogdon, Greg Couch, Bill + Crutchfield, Abel Deuring, Tim Docker, Fred Drake, Graham Dumpleton, + Matthew Ellis, Eric Etheridge, Daniel Fetchinson, Robin Friedrich, + Pier Paolo Glave, Federico Di Gregorio, Markus Gritsch, Daniel + Haertle, Greg Hamilton, Mark Hammond, Bernhard Herzog, Rob Hooft, Bob + Ippolito, Jack Jansen, Bill Janssen, Edward Jones, Richard Jones, + Håkan Karlsson, Robert Kern, David Kirtley, Bob Klimek, Matthias + Klose, Andrew Kuchling, Magnus Källström, Victor Lacina, Ben Last, + Hamish Lawson, Cesare Leonardi, Andrew MacIntyre, Jan Matejek, Naveen + Michaud-Agrawal, Gordon McMillan, Skip Montanaro, Fredrik Nehr, + Russell Nelson, Luciano Nocera, Travis Oliphant, Piet van Oostrum, + Richard Oudkerk, Paul Pharr, Andres Polit, Conrado Porto Lopes Gouvêa, + Eric Raymond, Victor Reijs, Bertil Reinhammar, Nicholas Riley, Don + Rozenberg, Toby Sargeant, Barry Scott, Les Schaffer, Joel Shprentz, + Klamer Shutte, Gene Skonicki, Niki Spahiev, D. Alan Stewart, Perry + Stoll, Paul Svensson, Ulrik Svensson, Miki Tebeka, Michael van + Tellingen, Ivan Tkatchev, Dan Torop, Adam Twardoch, Rune Uhlin, Dmitry + Vasiliev, Sasha Voynow, Charles Waldman, Collin Winter, Dan Wolfe, + Ka-Ping Yee, and many others (if your name should be on this list, let + me know.) + + *** Changes from release 1.1.6 to 1.1.7 *** + + This section may not be fully complete. For changes since this file + was last updated, see the repository revision history: + + http://bitbucket.org/effbot/pil-2009-raclette/changesets/ + + (1.1.7 final) + + + Set GIF loop info property to the number of iterations if a NETSCAPE + loop extension is present, instead of always setting it to 1 (from + Valentino Volonghi). + + (1.1.7c1 released) + + + Improved PNG compression (from Alexey Borzenkov). + + + Read interlaced PNG files (from Conrado Porto Lopes Gouvêa) + + + Added various TGA improvements from Alexey Borzenkov, including + support for specifying image orientation. + + + Bumped block threshold to 16 megabytes, made size estimation a bit + more accurate. This speeds up allocation of large images. + + + Fixed rounding error in ImagingDrawWideLine. + + "gormish" writes: ImagingDrawWideLine() in Draw.c has a bug in every + version I've seen, which leads to different width lines depending on + the order of the points in the line. This is especially bad at some + angles where a 'width=2' line can completely disappear. + + + Added support for RGBA mode to the SGI module (based on code by + Karsten Hiddemann). + + + Handle repeated IPTC tags (adapted from a patch by Eric Bruning). + + Eric writes: According to the specification, some IPTC tags can be + repeated, e.g., tag 2:25 (keywords). PIL 1.1.6 only retained the last + instance of that tag. Below is a patch to store all tags. If there are + multiple tag instances, they are stored in a (python) list. Single tag + instances remain as strings. + + + Fixed potential crash in ImageFilter for small target images + (reported by Zac Burns and Daniel Fetchinson). + + + Use BMP instead of JPEG as temporary show format on Mac OS X. + + + Fixed putpixel/new for I;16 with colors > 255. + + + Added integer power support to ImagingMath. + + + Added limited support for I;16L mode (explicit little endian). + + + Moved WMF support into Image.core; enable WMF rendering by default + if renderer is available. + + + Mark the ARG plugin as obsolete. + + + Added version query mechanism to ImageCms and ImageFont, for + debugging. + + + Added (experimental) ImageCms function for fetching the ICC profile + for the current display (currently Windows only). + + Added HWND/HDC support to ImageCms.get_display_profile(). + + + Added WMF renderer (Windows only). + + + Added ImagePointHandler and ImageTransformHandler mixins; made + ImageCmsTransform work with im.point. + + + Fixed potential endless loop in the XVThumbnail reader (from Nikolai + Ugelvik). + + + Added Kevin Cazabon's pyCMS package. + + The C code has been moved to _imagingcms.c, the Python interface + module is installed as PIL.ImageCMS. + + Added support for in-memory ICC profiles. + + Unified buildTransform and buildTransformFromOpenProfiles. + + The profile can now be either a filename, a profile object, or a + file-like object containing an in-memory profile. + + Additional fixes from Florian Böch: + + Very nice - it just needs LCMS flags support so we can use black + point compensation and softproofing :) See attached patches. They + also fix a naming issue which could cause confusion - display + profile (ImageCms wording) actually means proof profile (lcms + wording), so I changed variable names and docstrings where + applicable. Patches are tested under Python 2.6. + + + Improved support for layer names in PSD files (from Sylvain Baubeau) + + Sylvain writes: I needed to be able to retrieve the names of the + layers in a PSD files. But PsdImagePlugin.py didn't do the job so I + wrote this very small patch. + + + Improved RGBA support for ImageTk for 8.4 and newer (from Con + Radchenko). + + This replaces the slow run-length based encoding model with true + compositing at the Tk level. + + + Added support for 16- and 32-bit images to McIdas loader. + + Based on file samples and stand-alone reader code provided by Craig + Swank. + + + Added ImagePalette support to putpalette. + + + Fixed problem with incremental parsing of PNG files. + + + Make selftest.py report non-zero status on failure (from Mark + Sienkiewicz) + + + Add big endian save support and multipage infrastructure to the TIFF + writer (from Sebastian Haase). + + + Handle files with GPS IFD but no basic EXIF IFD (reported by Kurt + Schwehr). + + + Added zTXT support (from Andrew Kuchling via Lowell Alleman). + + + Fixed potential infinite loop bug in ImageFont (from Guilherme Polo). + + + Added sample ICC profiles (from Kevin Cazabon) + + + Fixed array interface for I, F, and RGBA/RGBX images. + + + Added Chroma subsampling support for JPEG (from Justin Huff). + + Justin writes: Attached is a patch (against PIL 1.1.6) to provide + control over the chroma subsampling done by the JPEG encoder. This + is often useful for reducing compression artifacts around edges of + clipart and text. + + + Added USM/Gaussian Blur code from Kevin Cazabon. + + + Fixed bug w. uninitialized image data when cropping outside the + source image. + + + Use ImageShow to implement the Image.show method. + + Most notably, this picks the 'display' utility when available. It + also allows application code to register new display utilities via + the ImageShow registry. + + + Release the GIL in the PNG compressor (from Michael van Tellingen). + + + Revised JPEG CMYK handling. + + Always assume Adobe behaviour, both when reading and writing (based on + a patch by Kevin Cazabon, and test data by Tim V. and Charlie Clark, and + additional debugging by Michael van Tellingen). + + + Support for preserving ICC profiles (by Florian Böch via Tim Hatch). + + Florian writes: + + It's a beta, so still needs some testing, but should allow you to: + - retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF. + Existing code doesn't need to be changed. + - access embedded profiles in JPEG, PNG, PSD, TIFF. + + It also includes patches for TIFF to retain IPTC, Photoshop and XMP + metadata when saving as TIFF again, read/write TIFF resolution + information correctly, and to correct inverted CMYK JPEG files. + + + Fixed potential memory leak in median cut quantizer (from Evgeny Salmin). + + + Fixed OverflowError when reading upside-down BMP images. + + + Added resolution save option for PDF files. + + Andreas Kostyrka writes: I've included a patched PdfImagePlugin.py + based on 1.1.6 as included in Ubuntu, that supports a "resolution" + save option. Not great, but it makes the PDF saving more useful by + allowing PDFs that are not exactly 72dpi. + + + Look for Tcl/Tk include files in version-specific include directory + (from Encolpe Degoute). + + + Fixed grayscale rounding error in ImageColor.getcolor (from Tim + Hatch). + + + Fixed calculation of mean value in ImageEnhance.Contrast (reported + by "roop" and Scott David Daniels). + + + Fixed truetype positioning when first character has a negative left + bearing (from Ned Batchelder): + + Ned writes: In PIL 1.1.6, ImageDraw.text will position the string + incorrectly if the first character has a negative left bearing. To + see the problem, show a string like "///" in an italic font. The + first slash will be clipped at the left, and the string will be + mis-positioned. + + + Fixed resolution unit bug in tiff reader/writer (based on code by + Florian Höch, Gary Bloom, and others). + + + Added simple transparency support for RGB images (reported by + Sebastian Spaeth). + + + Added support for Unicode filenames in ImageFont.truetype (from Donn + Ingle). + + + Fixed potential crash in ImageFont.getname method (from Donn Ingle). + + + Fixed encoding issue in PIL/WalImageFile (from Santiago M. Mola). + + *** Changes from release 1.1.5 to 1.1.6 *** + + (1.1.6 released) + + + Fixed some 64-bit compatibility warnings for Python 2.5. + + + Added threading support for the Sane driver (from Abel Deuring). + + (1.1.6b2 released) + + + Added experimental "floodfill" function to the ImageDraw module + (based on code by Eric Raymond). + + + The default arguments for "frombuffer" doesn't match "fromstring" + and the documentation; this is a bug, and will most likely be fixed + in a future version. In this release, PIL prints a warning message + instead. To silence the warning, change any calls of the form + "frombuffer(mode, size, data)" to + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + + Added "fromarray" function, which takes an object implementing the + NumPy array interface and creates a PIL Image from it. (from Travis + Oliphant). + + + Added NumPy array interface support (__array_interface__) to the + Image class (based on code by Travis Oliphant). + + This allows you to easily convert between PIL image memories and + NumPy arrays: + + import numpy, Image + + im = Image.open('lena.jpg') + + a = numpy.asarray(im) # a is readonly + + im = Image.fromarray(a) + + + Fixed CMYK polarity for JPEG images, by treating all images as + "Adobe CMYK" images. (thanks to Cesare Leonardi and Kevin Cazabon + for samples, debugging, and patches). + + (1.1.6b1 released) + + + Added 'expand' option to the Image 'rotate' method. If true, the + output image is made large enough to hold the entire rotated image. + + + Changed the ImageDraw 'line' method to always draw the last pixel in + a polyline, independent of line angle. + + + Fixed bearing calculation and clipping in the ImageFont truetype + renderer; this could lead to clipped text, or crashes in the low- + level _imagingft module. (based on input from Adam Twardoch and + others). + + + Added ImageQt wrapper module, for converting PIL Image objects to + QImage objects in an efficient way. + + + Fixed 'getmodebands' to return the number of bands also for "PA" + and "LA" modes. Added 'getmodebandnames' helper that return the + band names. + + (1.1.6a2 released) + + + Added float/double support to the TIFF loader (from Russell + Nelson). + + + Fixed broken use of realloc() in path.c (from Jan Matejek) + + + Added save support for Spider images (from William Baxter). + + + Fixed broken 'paste' and 'resize' operations in pildriver + (from Bill Janssen). + + + Added support for duplex scanning to the Sane interface (Abel + Deuring). + + (1.1.6a1 released) + + + Fixed a memory leak in "convert(mode)", when converting from + L to P. + + + Added pixel access object. The "load" method now returns a + access object that can be used to directly get and set pixel + values, using ordinary [x, y] notation: + + pixel = im.load() + v = pixel[x, y] + pixel[x, y] = v + + If you're accessing more than a few pixels, this is a lot + faster than using getpixel/putpixel. + + + Fixed building on Cygwin (from Miki Tebeka). + + + Fixed "point(callable)" on unloaded images (reported by Håkan + Karlsson). + + + Fixed size bug in ImageWin.ImageWindow constructor (from Victor + Reijs) + + + Fixed ImageMath float() and int() operations for Python 2.4 + (reported by Don Rozenberg). + + + Fixed "RuntimeError: encoder error -8 in tostring" problem for + wide "RGB", "I", and "F" images. + + + Fixed line width calculation. + + (1.1.6a0 released) + + + Fixed byte order issue in Image.paste(ink) (from Ka-Ping Yee). + + + Fixed off-by-0.5 errors in the ANTIALIAS code (based on input + from Douglas Bagnall). + + + Added buffer interface support to the Path constructor. If + a buffer is provided, it is assumed to contain a flat array + of float coordinates (e.g. array.array('f', seq)). + + + Added new ImageMath module. + + + Fixed ImageOps.equalize when used with a small number of distinct + values (reported by David Kirtley). + + + Fixed potential integer division in PSDraw.image (from Eric Etheridge). + + *** Changes from release 1.1 to 1.1.5 *** + + (1.1.5c2 and 1.1.5 final released) + + + Added experimental PERSPECTIVE transform method (from Jeff Breiden- + bach). + + (1.1.5c1 released) + + + Make sure "thumbnail" never generates zero-wide or zero-high images + (reported by Gene Skonicki) + + + Fixed a "getcolors" bug that could result in a zero count for some + colors (reported by Richard Oudkerk). + + + Changed default "convert" palette to avoid "rounding errors" when + round-tripping white source pixels (reported by Henryk Gerlach and + Jeff Epler). + + (1.1.5b3 released) + + + Don't crash in "quantize" method if the number of colors requested + is larger than 256. This release raises a ValueError exception; + future versions may return a mode "RGB" image instead (reported + by Richard Oudkerk). + + + Added WBMP read/write support (based on code by Duncan Booth). + + (1.1.5b2 released) + + + Added DPI read/write support to the PNG codec. The decoder sets + the info["dpi"] attribute for PNG files with appropriate resolution + settings. The encoder uses the "dpi" option (based on code by Niki + Spahiev). + + + Added limited support for "point" mappings from mode "I" to mode "L". + Only 16-bit values are supported (other values are clipped), the lookup + table must contain exactly 65536 entries, and the mode argument must be + set to "L". + + + Added support for Mac OS X icns files (based on code by Bob Ippolito). + + + Added "ModeFilter" support to the ImageFilter module. + + + Added support for Spider images (from William Baxter). See the + comments in PIL/SpiderImagePlugin.py for more information on this + format. + + (1.1.5b1 released) + + + Added new Sane release (from Ralph Heinkel). See the Sane/README + and Sane/CHANGES files for more information. + + + Added experimental PngInfo chunk container to the PngImageFile + module. This can be used to add arbitrary chunks to a PNG file. + Create a PngInfo instance, use "add" or "add_text" to add chunks, + and pass the instance as the "pnginfo" option when saving the + file. + + + Added "getpalette" method. This returns the palette as a list, + or None if the image has no palette. To modify the palette, use + "getpalette" to fetch the current palette, modify the list, and + put it back using "putpalette". + + + Added optional flattening to the ImagePath "tolist" method. + tolist() or tolist(0) returns a list of 2-tuples, as before. + tolist(1) returns a flattened list instead. + + (1.1.5a5 released) + + + Fixed BILINEAR/BICUBIC/ANTIALIAS filtering for mode "LA". + + + Added "getcolors()" method. This is similar to the existing histo- + gram method, but looks at color values instead of individual layers, + and returns an unsorted list of (count, color) tuples. + + By default, the method returns None if finds more than 256 colors. + If you need to look for more colors, you can pass in a limit (this + is used to allocate internal tables, so you probably don't want to + pass in too large values). + + + Build improvements: Fixed building under AIX, improved detection of + FreeType2 and Mac OS X framework libraries, and more. Many thanks + to everyone who helped test the new "setup.py" script! + + (1.1.5a4 released) + + + The "save" method now looks for a file format driver before + creating the file. + + + Don't use antialiased truetype fonts when drawing in mode "P", "I", + and "F" images. + + + Rewrote the "setup.py" file. The new version scans for available + support libraries, and configures both the libImaging core library + and the bindings in one step. + + To use specific versions of the libraries, edit the ROOT variables + in the setup.py file. + + + Removed threaded "show" viewer; use the old "show" implementation + instead (Windows). + + + Added deprecation warnings to Image.offset, ImageDraw.setink, and + ImageDraw.setfill. + + + Added width option to ImageDraw.line(). The current implementation + works best for straight lines; it does not support line joins, so + polylines won't look good. + + + ImageDraw.Draw is now a factory function instead of a class. If + you need to create custom draw classes, inherit from the ImageDraw + class. All other code should use the factory function. + + + Fixed loading of certain PCX files (problem reported by Greg + Hamilton, who also provided samples). + + + Changed _imagingft.c to require FreeType 2.1 or newer. The + module can still be built with earlier versions; see comments + in _imagingft.c for details. + + (1.1.5a3 released) + + + Added 'getim' method, which returns a PyCObject wrapping an + Imaging pointer. The description string is set to IMAGING_MAGIC. + See Imaging.h for pointer and string declarations. + + + Fixed reading of TIFF JPEG images (problem reported by Ulrik + Svensson). + + + Made ImageColor work under Python 1.5.2 + + + Fixed division by zero "equalize" on very small images (from + Douglas Bagnall). + + (1.1.5a2 released) + + + The "paste" method now supports the alternative "paste(im, mask)" + syntax (in this case, the box defaults to im's bounding box). + + + The "ImageFile.Parser" class now works also for PNG files with + more than one IDAT block. + + + Added DPI read/write to the TIFF codec, and fixed writing of + rational values. The decoder sets the info["dpi"] attribute + for TIFF files with appropriate resolution settings. The + encoder uses the "dpi" option. + + + Disable interlacing for small (or narrow) GIF images, to + work around what appears to be a hard-to-find bug in PIL's + GIF encoder. + + + Fixed writing of mode "P" PDF images. Made mode "1" PDF + images smaller. + + + Made the XBM reader a bit more robust; the file may now start + with a few whitespace characters. + + + Added support for enhanced metafiles to the WMF driver. The + separate PILWMF kit lets you render both placeable WMF files + and EMF files as raster images. See + + http://effbot.org/downloads#pilwmf + + (1.1.5a1 released) + + + Replaced broken WMF driver with a WMF stub plugin (see below). + + + Fixed writing of mode "1", "L", and "CMYK" PDF images (based on + input from Nicholas Riley and others). + + + Fixed adaptive palette conversion for zero-width or zero-height + images (from Chris Cogdon) + + + Fixed reading of PNG images from QuickTime 6 (from Paul Pharr) + + + Added support for StubImageFile plugins, including stub plugins + for BUFR, FITS, GRIB, and HDF5 files. A stub plugin can identify + a given file format, but relies on application code to open and + save files in that format. + + + Added optional "encoding" argument to the ImageFont.truetype + factory. This argument can be used to specify non-Unicode character + maps for fonts that support that. For example, to draw text using + the Microsoft Symbol font, use: + + font = ImageFont.truetype("symbol.ttf", 16, encoding="symb") + draw.text((0, 0), unichr(0xF000 + 0xAA)) + + (note that the symbol font uses characters in the 0xF000-0xF0FF + range) + + Common encodings are "unic" (Unicode), "symb" (Microsoft Symbol), + "ADOB" (Adobe Standard), "ADBE" (Adobe Expert), and "armn" (Apple + Roman). See the FreeType documentation for more information. + + + Made "putalpha" a bit more robust; you can now attach an alpha + layer to a plain "L" or "RGB" image, and you can also specify + constant alphas instead of alpha layers (using integers or colour + names). + + + Added experimental "LA" mode support. + + An "LA" image is an "L" image with an attached transparency layer. + Note that support for "LA" is not complete; some operations may + fail or produce unexpected results. + + + Added "RankFilter", "MinFilter", "MedianFilter", and "MaxFilter" + classes to the ImageFilter module. + + + Improved support for applications using multiple threads; PIL + now releases the global interpreter lock for many CPU-intensive + operations (based on work by Kevin Cazabon). + + + Ignore Unicode characters in the PCF loader (from Andres Polit) + + + Fixed typo in OleFileIO.loadfat, which could affect loading of + FlashPix and Image Composer images (Daniel Haertle) + + + Fixed building on platforms that have Freetype but don't have + Tcl/Tk (Jack Jansen, Luciano Nocera, Piet van Oostrum and others) + + + Added EXIF GPSInfo read support for JPEG files. To extract + GPSInfo information, open the file, extract the exif dictionary, + and check for the key 0x8825 (GPSInfo). If present, it contains + a dictionary mapping GPS keys to GPS values. For a list of keys, + see the EXIF specification. + + The "ExifTags" module contains a GPSTAGS dictionary mapping GPS + tags to tag names. + + + Added DPI read support to the PCX and DCX codecs (info["dpi"]). + + + The "show" methods now uses a built-in image viewer on Windows. + This viewer creates an instance of the ImageWindow class (see + below) and keeps it running in a separate thread. NOTE: This + was disabled in 1.1.5a4. + + + Added experimental "Window" and "ImageWindow" classes to the + ImageWin module. These classes allow you to create a WCK-style + toplevel window, and use it to display raster data. + + + Fixed some Python 1.5.2 issues (to build under 1.5.2, use the + Makefile.pre.in/Setup.in approach) + + + Added support for the TIFF FillOrder tag. PIL can read mode "1", + "L", "P" and "RGB" images with non-standard FillOrder (based on + input from Jeff Breidenbach). + + (1.1.4 final released) + + + Fixed ImageTk build problem on Unix. + + (1.1.4b2 released) + + + Improved building on Mac OS X (from Jack Jansen). + + + Improved building on Windows with MinGW (from Klamer Shutte). + + + If no font is specified, ImageDraw now uses the embedded default + font. Use the "load" or "truetype" methods to load a real font. + + + Added embedded default font to the ImageFont module (currently + an 8-pixel Courier font, taken from the X window distribution). + + (1.1.4b1 released) + + + Added experimental EXIF support for JPEG files. To extract EXIF + information from a JPEG file, open the file as usual, and call the + "_getexif" method. If successful, this method returns a dictionary + mapping EXIF TIFF tags to values. If the file does not contain EXIF + data, the "_getexif" method returns None. + + The "ExifTags" module contains a dictionary mapping tags to tag + names. + + This interface will most likely change in future versions. + + + Fixed a bug when using the "transparency" option with the GIF + writer. + + + Added limited support for "bitfield compression" in BMP files + and DIB buffers, for 15-bit, 16-bit, and 32-bit images. This + also fixes a problem with ImageGrab module when copying screen- + dumps from the clipboard on 15/16/32-bit displays. + + + Added experimental WAL (Quake 2 textures) loader. To use this + loader, import WalImageFile and call the "open" method in that + module. + + (1.1.4a4 released) + + + Added updated SANE driver (Andrew Kuchling, Abel Deuring) + + + Use Python's "mmap" module on non-Windows platforms to read some + uncompressed formats using memory mapping. Also added a "frombuffer" + function that allows you to access the contents of an existing string + or buffer object as if it were an image object. + + + Fixed a memory leak that could appear when processing mode "P" + images (from Pier Paolo Glave) + + + Ignore Unicode characters in the BDF loader (from Graham Dumpleton) + + (1.1.4a3 released; windows only) + + + Added experimental RGBA-on-RGB drawing support. To use RGBA + colours on an RGB image, pass "RGBA" as the second string to + the ImageDraw.Draw constructor. + + + Added support for non-ASCII strings (Latin-1) and Unicode + to the truetype font renderer. + + + The ImageWin "Dib" object can now be constructed directly from + an image object. + + + The ImageWin module now allows you use window handles as well + as device contexts. To use a window handle, wrap the handle in + an ImageWin.HWND object, and pass in this object instead of the + device context. + + (1.1.4a2 released) + + + Improved support for 16-bit unsigned integer images (mode "I;16"). + This includes TIFF reader support, and support for "getextrema" + and "point" (from Klamer Shutte). + + + Made the BdfFontFile reader a bit more robust (from Kevin Cazabon + and Dmitry Vasiliev) + + + Changed TIFF writer to always write Compression tag, even when + using the default compression (from Greg Couch). + + + Added "show" support for Mac OS X (from Dan Wolfe). + + + Added clipboard support to the "ImageGrab" module (Windows only). + The "grabclipboard" function returns an Image object, a list of + filenames (not in 1.1.4), or None if neither was found. + + (1.1.4a1 released) + + + Improved support for drawing RGB data in palette images. You can + now use RGB tuples or colour names (see below) when drawing in a + mode "P" image. The drawing layer automatically assigns color + indexes, as long as you don't use more than 256 unique colours. + + + Moved self test from MiniTest/test.py to ./selftest.py. + + + Added support for CSS3-style color strings to most places that + accept colour codes/tuples. This includes the "ImageDraw" module, + the Image "new" function, and the Image "paste" method. + + Colour strings can use one of the following formats: "#f00", + "#ff0000", "rgb(255,0,0)", "rgb(100%,0%,0%)", "hsl(0, 100%, 50%)", + or "red" (most X11-style colour names are supported). See the + documentation for the "ImageColor" module for more information. + + + Fixed DCX decoder (based on input from Larry Bates) + + + Added "IptcImagePlugin.getiptcinfo" helper to extract IPTC/NAA + newsphoto properties from JPEG, TIFF, or IPTC files. + + + Support for TrueType/OpenType fonts has been added to + the standard distribution. You need the freetype 2.0 + library. + + + Made the PCX reader a bit more robust when reading 2-bit + and 4-bit PCX images with odd image sizes. + + + Added "Kernel" class to the ImageFilter module. This class + allows you to filter images with user-defined 3x3 and 5x5 + convolution kernels. + + + Added "putdata" support for mode "I", "F" and "RGB". + + + The GIF writer now supports the transparency option (from + Denis Benoit). + + + A HTML version of the module documentation is now shipped + with the source code distribution. You'll find the files in + the Doc subdirectory. + + + Added support for Palm pixmaps (from Bill Janssen). This + change was listed for 1.1.3, but the "PalmImagePlugin" driver + didn't make it into the distribution. + + + Improved decoder error messages. + + (1.1.3 final released) + + + Made setup.py look for old versions of zlib. For some back- + ground, see: http://www.gzip.org/zlib/advisory-2002-03-11.txt + + (1.1.3c2 released) + + + Added setup.py file (tested on Unix and Windows). You still + need to build libImaging/imaging.lib in the traditional way, + but the setup.py script takes care of the rest. + + The old Setup.in/Makefile.pre.in build method is still + supported. + + + Fixed segmentation violation in ANTIALIAS filter (an internal + buffer wasn't properly allocated). + + (1.1.3c1 released) + + + Added ANTIALIAS downsampling filter for high-quality "resize" + and "thumbnail" operations. Also added filter option to the + "thumbnail" operation; the default value is NEAREST, but this + will most likely change in future versions. + + + Fixed plugin loader to be more robust if the __file__ + variable isn't set. + + + Added seek/tell support (for layers) to the PhotoShop + loader. Layer 0 is the main image. + + + Added new (but experimental) "ImageOps" module, which provides + shortcuts for commonly used operations on entire images. + + + Don't mess up when loading PNG images if the decoder leaves + data in the output buffer. This could cause internal errors + on some PNG images, with some versions of ZLIB. (Bug report + and patch provided by Bernhard Herzog.) + + + Don't mess up on Unicode filenames. + + + Don't mess up when drawing on big endian platforms. + + + Made the TIFF loader a bit more robust; it can now read some + more slightly broken TIFF files (based on input from Ted Wright, + Bob Klimek, and D. Alan Stewart) + + + Added OS/2 EMX build files (from Andrew MacIntyre) + + + Change "ImageFont" to reject image files if they don't have the + right mode. Older versions could leak memory for "P" images. + (Bug reported by Markus Gritsch). + + + Renamed some internal functions to avoid potential build + problem on Mac OS X. + + + Added DL_EXPORT where relevant (for Cygwin, based on input + from Robert Yodlowski) + + + (re)moved bogus __init__ call in BdfFontFile (bug spotted + by Fred Clare) + + + Added "ImageGrab" support (Windows only) + + + Added support for XBM hotspots (based on code contributed by + Bernhard Herzog). + + + Added write support for more TIFF tags, namely the Artist, + Copyright, DateTime, ResolutionUnit, Software, XResolution and + YResolution tags (from Greg Couch) + + + Added TransposedFont wrapper to ImageFont module + + + Added "optimize" flag to GIF encoder. If optimize is present + and non-zero, PIL will work harder to create a small file. + + + Raise "EOFError" (not IndexError) when reading beyond the + end of a TIFF sequence. + + + Support rewind ("seek(0)") for GIF and TIFF sequences. + + + Load grayscale GIF images as mode "L" + + + Added DPI read/write support to the JPEG codec. The decoder + sets the info["dpi"] attribute for JPEG files with JFIF dpi + settings. The encoder uses the "dpi" option: + + im = Image.open("file.jpg") + dpi = im.info["dpi"] # raises KeyError if DPI not known + im.save("out.jpg", dpi=dpi) + + Note that PIL doesn't always preserve the "info" attribute + for normal image operations. + + (1.1.2c1 and 1.1.2 final released) + + + Adapted to Python 2.1. Among other things, all uses of the + "regex" module has been repleased with "re". + + + Fixed attribute error when reading large PNG files (this bug + was introduced in maintenance code released after the 1.1.1 + release) + + + Ignore non-string objects in sys.path + + + Fixed Image.transform(EXTENT) for negative xoffsets + + + Fixed loading of image plugins if PIL is installed as a package. + (The plugin loader now always looks in the directory where the + Image.py module itself is found, even if that directory isn't on + the standard search path) + + + The Png plugin has been added to the list of preloaded standard + formats + + + Fixed bitmap/text drawing in fill mode. + + + Fixed "getextrema" to work also for multiband images. + + + Added transparency support for L and P images to the PNG codec. + + + Improved support for read-only images. The "load" method now + sets the "readonly" attribute for memory-mapped images. Operations + that modifies an image in place (such as "paste" and drawing operations) + creates an in-memory copy of the image, if necessary. (before this + change, any attempt to modify a memory-mapped image resulted in a + core dump...) + + + Added special cases for lists everywhere PIL expects a sequence. + This should speed up things like "putdata" and drawing operations. + + + The Image.offset method is deprecated. Use the ImageChops.offset + function instead. + + + Changed ImageChops operators to copy palette and info dictionary + from the first image argument. + + (1.1.1 released) + + + Additional fixes for Python 1.6/2.0, including TIFF "save" bug. + + + Changed "init" to properly load plugins when PIL is used as a + package. + + + Fixed broken "show" method (on Unix) + + *** Changes from release 1.0 to 1.1 *** + + + Adapted to Python 1.6 ("append" and other method changes) + + + Fixed Image.paste when pasting with solid colour and matte + layers ("L" or "RGBA" masks) (bug reported by Robert Kern) + + + To make it easier to distribute prebuilt versions of PIL, + the tkinit binding stuff has been moved to a separate + extension module, named "_imagingtk". + + *** Changes from release 0.3b2 to 1.0 final *** + + + If there's no 16-bit integer (like on a Cray T3E), set + INT16 to the smallest integer available. Most of the + library works just fine anyway (from Bill Crutchfield) + + + Tweaks to make drawing work on big-endian platforms. + + (1.0c2 released) + + + If PIL is built with the WITH_TKINTER flag, ImageTk can + automatically hook into a standard Tkinter build. You + no longer need to build your own Tkinter to use the + ImageTk module. + + The old way still works, though. For more information, + see Tk/install.txt. + + + Some tweaks to ImageTk to support multiple Tk interpreters + (from Greg Couch). + + + ImageFont "load_path" now scans directory mentioned in .pth + files (from Richard Jones). + + (1.0c1 released) + + + The TIFF plugin has been rewritten. The new plugin fully + supports all major PIL image modes (including F and I). + + + The ImageFile module now includes a Parser class, which can + be used to incrementally decode an image file (while down- + loading it from the net, for example). See the handbook for + details. + + + "show" now converts non-standard modes to "L" or "RGB" (as + appropriate), rather than writing weird things to disk for + "xv" to choke upon. (bug reported by Les Schaffer). + + (1.0b2 released) + + + Major speedups for rotate, transform(EXTENT), and transform(AFFINE) + when using nearest neighbour resampling. + + + Modified ImageDraw to be compatible with the Arrow graphics + interface. See the handbook for details. + + + PIL now automatically loads file codecs when used as a package + (from The Dragon De Monsyne). Also included an __init__.py file + in the standard distribution. + + + The GIF encoder has been modified to produce much smaller files. + + PIL now uses a run-length encoding method to encode GIF files. + On a random selection of GIF images grabbed from the web, this + version makes the images about twice as large as the original + LZW files, where the earlier version made them over 5 times + larger. YMMV, of course. + + + Added PCX write support (works with "1", "P", "L", and "RGB") + + + Added "bitmap" and "textsize" methods to ImageDraw. + + + Improved font rendering code. Fixed a bug or two, and moved + most of the time critical stuff to C. + + + Removed "bdf2pil.py". Use "pilfont.py" instead! + + + Improved 16-bit support (still experimental, though). + + The following methods now support "I;16" and "I;16B" images: + "getpixel", "copy", "convert" (to and from mode "I"), "resize", + "rotate", and "transform" with nearest neighbour filters, and + "save" using the IM format. The "new" and "open" functions + also work as expected. On Windows, 16-bit files are memory + mapped. + + NOTE: ALL other operations are still UNDEFINED on 16-bit images. + + + The "paste" method now supports constant sources. + + Just pass a colour value (a number or a tuple, depending on + the target image mode) instead of the source image. + + This was in fact implemented in an inefficient way in + earlier versions (the "paste" method generated a temporary + source image if you passed it a colour instead of an image). + In this version, this is handled on the C level instead. + + + Added experimental "RGBa" mode support. + + An "RGBa" image is an RGBA image where the colour components + have have been premultipled with the alpha value. PIL allows + you to convert an RGBA image to an RGBa image, and to paste + RGBa images on top of RGB images. Since this saves a bunch + of multiplications and shifts, it is typically about twice + as fast an ordinary RGBA paste. + + + Eliminated extra conversion step when pasting "RGBA" or "RGBa" + images on top of "RGB" images. + + + Fixed Image.BICUBIC resampling for "RGB" images. + + + Fixed PCX image file handler to properly read 8-bit PCX + files (bug introduced in 1.0b1, reported by Bernhard + Herzog) + + + Fixed PSDraw "image" method to restore the coordinate + system. + + + Fixed "blend" problem when applied to images that was + not already loaded (reported by Edward C. Jones) + + + Fixed -f option to "pilconvert.py" (from Anthony Baxter) + + (1.0b1 released) + + + Added Toby J. Sargeant's quantization package. To enable + quantization, use the "palette" option to "convert": + + imOut = im.convert("P", palette=Image.ADAPTIVE) + + This can be used with "L", "P", and "RGB" images. In this + version, dithering cannot be used with adaptive palettes. + + Note: ADAPTIVE currently maps to median cut quantization + with 256 colours. The quantization package also contains + a maximum coverage quantizer, which will be supported by + future versions of PIL. + + + Added Eric S. Raymond's "pildriver" image calculator to the + distribution. See the docstring for more information. + + + The "offset" method no longer dumps core if given positive + offsets (from Charles Waldman). + + + Fixed a resource leak that could cause ImageWin to run out of + GDI resources (from Roger Burnham). + + + Added "arc", "chord", and "pieslice" methods to ImageDraw (inspired + by code contributed by Richard Jones). + + + Added experimental 16-bit support, via modes "I;16" (little endian + data) and "I;16B" (big endian). Only a few methods properly support + such images (see above). + + + Added XV thumbnail file handler (from Gene Cash). + + + Fixed BMP image file handler to handle palette images with small + palettes (from Rob Hooft). + + + Fixed Sun raster file handler for palette images (from Charles + Waldman). + + + Improved various internal error messages. + + + Fixed Path constructor to handle arbitrary sequence objects. This + also affects the ImageDraw class (from Richard Jones). + + + Fixed a bug in JpegDecode that caused PIL to report "decoder error + -2" for some progressive JPEG files (reported by Magnus Källström, + who also provided samples). + + + Fixed a bug in JpegImagePlugin that caused PIL to hang when loading + JPEG files using 16-bit quantization tables. + + + The Image "transform" method now supports Image.QUAD transforms. + The data argument is an 8-tuple giving the upper left, lower + left, lower right, and upper right corner of the source quadri- + lateral. Also added Image.MESH transform which takes a list + of quadrilaterals. + + + The Image "resize", "rotate", and "transform" methods now support + Image.BILINEAR (2x2) and Image.BICUBIC (4x4) resampling filters. + Filters can be used with all transform methods. + + + The ImageDraw "rectangle" method now includes both the right + and the bottom edges when drawing filled rectangles. + + + The TGA decoder now works properly for runlength encoded images + which have more than one byte per pixel. + + + "getbands" on an YCbCr image now returns ("Y", "Cb", "Cr") + + + Some file drivers didn't handle the optional "modify" argument + to the load method. This resulted in exceptions when you used + "paste" (and other methods that modify an image in place) on a + newly opened file. + + *** Changes from release 0.2 (b5) to 0.3 (b2) *** + + (0.3b2 released) + + The test suite includes 825 individual tests. + + + An Image "getbands" method has been added. It returns a tuple + containing the individual band names for this image. To figure + out how many bands an image has, use "len(im.getbands())". + + + An Image "putpixel" method has been added. + + + The Image "point" method can now be used to convert "L" images + to any other format, via a lookup table. That table should + contain 256 values for each band in the output image. + + + Some file drivers (including FLI/FLC, GIF, and IM) accidently + overwrote the offset method with an internal attribute. All + drivers have been updated to use private attributes where + possible. + + + The Image "histogram" method now works for "I" and "F" images. + For these modes, PIL divides the range between the min and + max values used in the image into 256 bins. You can also + pass in your own min and max values via the "extrema" option: + + h = im.histogram(extrema=(0, 255)) + + + An Image "getextrema" method has been added. It returns the + min and max values used in the image. In this release, this + works for single band images only. + + + Changed the PNG driver to load and save mode "I" images as + 16-bit images. When saving, values outside the range 0..65535 + are clipped. + + + Fixed ImageFont.py to work with the new "pilfont" compiler. + + + Added JPEG "save" and "draft" support for mode "YCbCr" images. + Note that if you save an "YCbCr" image as a JPEG file and read + it back, it is read as an RGB file. To get around this, you + can use the "draft" method: + + im = Image.open("color.jpg") + im.draft("YCbCr", im.size) + + + Read "RGBA" TGA images. Also fixed the orientation bug; all + images should now come out the right way. + + + Changed mode name (and internal representation) from "YCrCb" + to "YCbCr" (!) + *** WARNING: MAY BREAK EXISTING CODE *** + + (0.3b1 released) + + The test suite includes 750 individual tests. + + + The "pilfont" package is now included in the standard PIL + distribution. The pilfont utility can be used to convert + X BDF and PCF raster font files to a format understood by + the ImageFont module. + + + GIF files are now interlaced by default. To write a + non-interlaced file, pass interlace=0 to the "save" + method. + + + The default string format has changed for the "fromstring" + and "tostring" methods. + *** WARNING: MAY BREAK EXISTING CODE *** + + NOTE: If no extra arguments are given, the first line in + the string buffer is the top line of the image, instead of + the bottom line. For RGB images, the string now contains + 3 bytes per pixel instead of 4. These changes were made + to make the methods compatible with the "fromstring" + factory function. + + To get the old behaviour, use the following syntax: + + data = im.tostring("raw", "RGBX", 0, -1) + im.fromstring(data, "raw", "RGBX", 0, -1) + + + "new" no longer gives a MemoryError if the width or height + is zero (this only happened on platforms where malloc(0) + or calloc(0) returns NULL). + + + "new" now adds a default palette object to "P" images. + + + You can now convert directly between all modes supported by + PIL. When converting colour images to "P", PIL defaults to + a "web" palette and dithering. When converting greyscale + images to "1", PIL uses a thresholding and dithering. + + + Added a "dither" option to "convert". By default, "convert" + uses floyd-steinberg error diffusion for "P" and "1" targets, + so this option is only used to *disable* dithering. Allowed + values are NONE (no dithering) or FLOYDSTEINBERG (default). + + imOut = im.convert("P", dither=Image.NONE) + + + Added a full set of "I" decoders. You can use "fromstring" + (and file decoders) to read any standard integer type as an + "I" image. + + + Added some support for "YCbCr" images (creation, conversion + from/to "L" and "RGB", IM YCC load/save) + + + "getpixel" now works properly with fractional coordinates. + + + ImageDraw "setink" now works with "I", "F", "RGB", "RGBA", + "RGBX", "CMYK", and "YCbCr" images. + + + ImImagePlugin no longer attaches palettes to "RGB" images. + + + Various minor fixes. + + (0.3a4 released) + + + Added experimental IPTC/NAA support. + + + Eliminated AttributeError exceptions after "crop" (from + Skip Montanaro) + + + Reads some uncompressed formats via memory mapping (this + is currently supported on Win32 only) + + + Fixed some last minute glitches in the last alpha release + (Types instead of types in Image.py, version numbers, etc.) + + + Eliminated some more bogus compiler warnings. + + + Various fixes to make PIL compile and run smoother on Macs + (from Jack Jansen). + + + Fixed "fromstring" and "tostring" for mode "I" images. + + (0.3a3 released) + + The test suite includes 530 individual tests. + + + Eliminated unexpected side-effect in "paste" with matte. "paste" + now works properly also if compiled with "gcc". + + + Adapted to Python 1.5 (build issues only) + + + Fixed the ImageDraw "point" method to draw also the last + point (!). + + + Added "I" and "RGBX" support to Image.new. + + + The plugin path is now properly prepended to the module search + path when a plugin module is imported. + + + Added "draw" method to the ImageWin.Dib class. This is used by + Topaz to print images on Windows printers. + + + "convert" now supports conversions from "P" to "1" and "F". + + + "paste" can now take a colour instead of an image as the first argument. + The colour must match the colour argument given to the new function, and + match the mode of the target image. + + + Fixed "paste" to allow a mask also for mode "F" images. + + + The BMP driver now saves mode "1" images. When loading images, the mode + is set to "L" for 8-bit files with greyscale palettes, and to "P" for + other 8-bit files. + + + The IM driver now reads and saves "1" images (file modes "0 1" or "L 1"). + + + The JPEG and GIF drivers now saves "1" images. For JPEG, the image + is saved as 8-bit greyscale (it will load as mode "L"). For GIF, the + image will be loaded as a "P" image. + + + Fixed a potential buffer overrun in the GIF encoder. + + (0.3a2 released) + + The test suite includes 400 individual tests. + + + Improvements to the test suite revealed a number of minor bugs, which + are all fixed. Note that crop/paste, 32-bit ImageDraw, and ImageFont + are still weak spots in this release. + + + Added "putpalette" method to the Image class. You can use this + to add or modify the palette for "P" and "L" images. If a palette + is added to an "L" image, it is automatically converted to a "P" + image. + + + Fixed ImageDraw to properly handle 32-bit image memories + ("RGB", "RGBA", "CMYK", "F") + + + Fixed "fromstring" and "tostring" not to mess up the mode attribute + in default mode. + + + Changed ImPlatform.h to work on CRAY's (don't have one at home, so I + haven't tried it). The previous version assumed that either "short" + or "int" were 16-bit wide. PIL still won't compile on platforms where + neither "short", "int" nor "long" are 32-bit wide. + + + Added file= and data= keyword arguments to PhotoImage and BitmapImage. + This allows you to use them as drop-in replacements for the corre- + sponding Tkinter classes. + + + Removed bogus references to the crack coder (ImagingCrack). + + (0.3a1 released) + + + Make sure image is loaded in "tostring". + + + Added floating point packer (native 32-bit floats only). + + *** Changes from release 0.1b1 to 0.2 (b5) *** + + + Modified "fromstring" and "tostring" methods to use file codecs. + Also added "fromstring" factory method to create an image directly + from data in a string. + + + Added support for 32-bit floating point images (mode "F"). You + can convert between "L" and "F" images, and apply a subset of the + available image processing methods on the "F" image. You can also + read virtually any data format into a floating point image memory; + see the section on "Decoding Floating Point Data" in the handbook + for more information. + + (0.2b5 released; on windows only) + + + Fixed the tobitmap() method to work properly for small bitmaps. + + + Added RMS and standard deviation to the ImageStat.Stat class. Also + modified the constructor to take an optional feature mask, and also + to accept either an image or a list containing the histogram data. + + + The BitmapImage code in ImageTk can now use a special bitmap + decoder, which has to be patched into Tk. See the "Tk/pilbitmap.txt" + file for details. If not installed, bitmaps are transferred to Tk as + XBM strings. + + + The PhotoImage code in ImageTk now uses a Tcl command ("PyImagingPaste") + instead of a special image type. This gives somewhat better performance, + and also allows PIL to support transparency. + *** WARNING: TKAPPINIT MUST BE MODIFIED *** + + + ImageTk now honours the alpha layer in RGBA images. Only fully + transparent pixels are made transparent (that is, the alpha layer + is treated as a mask). To treat the alpha laters as a matte, you + must paste the image on the background before handing it over to + ImageTk. + + + Added McIdas reader (supports 8-bit images only). + + + PIL now preloads drivers for BMP, GIF, JPEG, PPM, and TIFF. As + long as you only load and save these formats, you don't have to + wait for a full scan for drivers. To force scanning, call the + Image.init() function. + + + The "seek" and "tell" methods are now always available, also for + single-frame images. + + + Added optional mask argument to histogram method. The mask may + be an "1" or "L" image with the same size as the original image. + Only pixels where the mask is non-zero are included in the + histogram. + + + The "paste" method now allows you to specify only the lower left + corner (a 2-tuple), instead of the full region (a 4-tuple). + + + Reverted to old plugin scanning model; now scans all directory + names in the path when looking for plugins. + + + Added PIXAR raster support. Only uncompressed ("dumped") RGB + images can currently be read (based on information provided + by Greg Coats). + + + Added FlashPix (FPX) read support. Reads all pixel formats, but + only the highest resolution is read, and the viewing transform is + currently ignored. + + + Made PNG encoding somewhat more efficient in "optimize" mode; a + bug in 0.2b4 didn't enable all predictor filters when optimized + storage were requested. + + + Added Microsoft Image Composer (MIC) read support. When opened, + the first sprite in the file is loaded. You can use the seek method + to load additional sprites from the file. + + + Properly reads "P" and "CMYK" PSD images. + + + "pilconvert" no longer optimizes by default; use the -o option to + make the file as small as possible (at the expense of speed); use + the -q option to set the quality when compressing to JPEG. + + + Fixed "crop" not to drop the palette for "P" images. + + + Added and verified FLC support. + + + Paste with "L" or "RGBA" alpha is now several times faster on most + platforms. + + + Changed Image.new() to initialize the image to black, as described + in the handbook. To get an uninitialized image, use None as the + colour. + + + Fixed the PDF encoder to produce a valid header; Acrobat no longer + complains when you load PDF images created by PIL. + + + PIL only scans fully-qualified directory names in the path when + looking for plugins. + *** WARNING: MAY BREAK EXISTING CODE *** + + + Faster implementation of "save" used when filename is given, + or when file object has "fileno" and "flush" methods. + + + Don't crash in "crop" if region extends outside the source image. + + + Eliminated a massive memory leak in the "save" function. + + + The GIF decoder doesn't crash if the code size is set to an illegal + value. This could happen since another bug didn't handle local + palettes properly if they didn't have the same size as the + global palette (not very common). + + + Added predictor support (TIFF 6.0 section 14) to the TIFF decoder. + + + Fixed palette and padding problems in BMP driver. Now properly + writes "1", "L", "P" and "RGB" images. + + + Fixed getpixel()/getdata() to return correct pixel values. + + + Added PSD (PhotoShop) read support. Reads both uncompressed + and compressed images of most types. + + + Added GIF write support (writes "uncompressed" GIF files only, + due to unresolvable licensing issues). The "gifmaker.py" script + can be used to create GIF animations. + + + Reads 8-bit "L" and "P" TGA images. Also reads 16-bit "RGB" + images. + + + Added FLI read support. This driver has only been tested + on a few FLI samples. + + + Reads 2-bit and 4-bit PCX images. + + + Added MSP read and write support. Both version 1 and 2 can be + read, but only version 1 (uncompressed) files are written. + + + Fixed a bug in the FLI/FLC identification code that caused the + driver to raise an exception when parsing valid FLI/FLC files. + + + Improved performance when loading file format plugins, and when + opening files. + + + Added GIF animation support, via the "seek" and "tell" methods. + You can use "player.py" to play an animated GIF file. + + + Removed MNG support, since the spec is changing faster than I + can change the code. I've added support for the experimental + ARG format instead. Contact me for more information on this + format. + + + Added keyword options to the "save" method. The following options + are currently supported: + + format option description + -------------------------------------------------------- + JPEG optimize minimize output file at the + expense of compression speed. + + JPEG progressive enable progressive output. the + option value is ignored. + + JPEG quality set compression quality (1-100). + the default value is 75. + + JPEG smooth smooth dithered images. value + is strengh (1-100). default is + off (0). + + PNG optimize minimize output file at the + expense of compression speed. + + Expect more options in future releases. Also note that + file writers silently ignore unknown options. + + + Plugged memory leaks in the PNG and TIFF decoders. + + + Added PNG write support. + + + (internal) RGB unpackers and converters now set the pad byte + to 255 (full opacity). + + + Properly handles the "transparency" property for GIF, PNG + and XPM files. + + + Added a "putalpha" method, allowing you to attach a "1" or "L" + image as the alpha layer to an "RGBA" image. + + + Various improvements to the sample scripts: + + "pilconvert" Carries out some extra tricks in order to make + the resulting file as small as possible. + + "explode" (NEW) Split an image sequence into individual frames. + + "gifmaker" (NEW) Convert a sequence file into a GIF animation. + Note that the GIF encoder create "uncompressed" GIF + files, so animations created by this script are + rather large (typically 2-5 times the compressed + sizes). + + "image2py" (NEW) Convert a single image to a python module. See + comments in this script for details. + + "player" If multiple images are given on the command line, + they are interpreted as frames in a sequence. The + script assumes that they all have the same size. + Also note that this script now can play FLI/FLC + and GIF animations. + + This player can also execute embedded Python + animation applets (ARG format only). + + "viewer" Transparent images ("P" with transparency property, + and "RGBA") are superimposed on the standard Tk back- + ground. + + + Fixed colour argument to "new". For multilayer images, pass a + tuple: (Red, Green, Blue), (Red, Green, Blue, Alpha), or (Cyan, + Magenta, Yellow, Black). + + + Added XPM (X pixmap) read support. + + (0.2b3 released) + + + Added MNG (multi-image network graphics) read support. "Ming" + is a proposed animation standard, based on the PNG file format. + + You can use the "player" sample script to display some flavours + of this format. The MNG standard is still under development, + as is this driver. More information, including sample files, + can be found at + + + Added a "verify" method to images loaded from file. This method + scans the file for errors, without actually decoding the image + data, and raises a suitable exception if it finds any problems. + Currently implemented for PNG and MNG files only. + + + Added support for interlaced GIF images. + + + Added PNG read support -- if linked with the ZLIB compression library, + PIL reads all kinds of PNG images, except interlaced files. + + + Improved PNG identification support -- doesn't mess up on unknown + chunks, identifies all possible PNG modes, and verifies checksum + on PNG header chunks. + + + Added an experimental reader for placable Windows Meta Files (WMF). + This reader is still very incomplete, but it illustrates how PIL's + drawing capabilities can be used to render vector and metafile + formats. + + + Added restricted drivers for images from Image Tools (greyscale + only) and LabEye/IFUNC (common interchange modes only). + + + Some minor improvements to the sample scripts provided in the + "Scripts" directory. + + + The test images have been moved to the "Images" directory. + + (0.2b2 released) + (0.2b1 released; Windows only) + + + Fixed filling of complex polygons. The ImageDraw "line" and + "polygon" methods also accept Path objects. + + + The ImageTk "PhotoImage" object can now be constructed directly + from an image. You can also pass the object itself to Tkinter, + instead of using the "image" attribute. Finally, using "paste" + on a displayed image automatically updates the display. + + + The ImageTk "BitmapImage" object allows you to create transparent + overlays from 1-bit images. You can pass the object itself to + Tkinter. The constructor takes the same arguments as the Tkinter + BitmapImage class; use the "foreground" option to set the colour + of the overlay. + + + Added a "putdata" method to the Image class. This can be used to + load a 1-layer image with data from a sequence object or a string. + An optional floating point scale and offset can be used to adjust + the data to fit into the 8-bit pixel range. Also see the "getdata" + method. + + + Added the EXTENT method to the Image "transform" method. This can + be used to quickly crop, stretch, shrink, or mirror a subregion + from another image. + + + Adapted to Python 1.4. + + + Added a project makefile for Visual C++ 4.x. This allows you to + easily build a dynamically linked version of PIL for Windows 95 + and NT. + + + A Tk "booster" patch for Windows is available. It gives dramatic + performance improvements for some displays. Has been tested with + Tk 4.2 only, but is likely to work with Tk 4.1 as well. See the Tk + subdirectory for details. + + + You can now save 1-bit images in the XBM format. In addition, the + Image class now provides a "tobitmap" method which returns a string + containing an XBM representation of the image. Quite handy to use + with Tk. + + + More conversions, including "RGB" to "1" and more. + + (0.2a1 released) + + + Where earlier versions accepted lists, this version accepts arbitrary + Python sequences (including strings, in some cases). A few resource + leaks were plugged in the process. + + + The Image "paste" method now allows the box to extend outside + the target image. The size of the box, the image to be pasted, + and the optional mask must still match. + + + The ImageDraw module now supports filled polygons, outlined and + filled ellipses, and text. Font support is rudimentary, though. + + + The Image "point" method now takes an optional mode argument, + allowing you to convert the image while translating it. Currently, + this can only be used to convert "L" or "P" images to "1" images + (creating thresholded images or "matte" masks). + + + An Image "getpixel" method has been added. For single band images, + it returns the pixel value at a given position as an integer. + For n-band images, it returns an n-tuple of integers. + + + An Image "getdata" method has been added. It returns a sequence + object representing the image as a 1-dimensional array. Only len() + and [] can be used with this sequence. This method returns a + reference to the existing image data, so changes in the image + will be immediately reflected in the sequence object. + + + Fixed alignment problems in the Windows BMP writer. + + + If converting an "RGB" image to "RGB" or "L", you can give a second + argument containing a colour conversion matrix. + + + An Image "getbbox" method has been added. It returns the bounding + box of data in an image, considering the value 0 as background. + + + An Image "offset" method has been added. It returns a new image + where the contents of the image have been offset the given distance + in X and/or Y direction. Data wraps between edges. + + + Saves PDF images. The driver creates a binary PDF 1.1 files, using + JPEG compression for "L", "RGB", and "CMYK" images, and hex encoding + (same as for PostScript) for other formats. + + + The "paste" method now accepts "1" masks. Zero means transparent, + any other pixel value means opaque. This is faster than using an + "L" transparency mask. + + + Properly writes EPS files (and properly prints images to postscript + printers as well). + + + Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR + files. Cursor animations are not supported. + + + Fixed alignment problems in the Sun raster loader. + + + Added "draft" and "thumbnail" methods. The draft method is used + to optimize loading of JPEG and PCD files, the thumbnail method is + used to create a thumbnail representation of an image. + + + Added Windows display support, via the ImageWin class (see the + handbook for details). + + + Added raster conversion for EPS files. This requires GNU or Aladdin + Ghostscript, and probably works on UNIX only. + + + Reads PhotoCD (PCD) images. The base resolution (768x512) can be + read from a PhotoCD file. + + + Eliminated some compiler warnings. Bindings now compile cleanly in C++ + mode. Note that the Imaging library itself must be compiled in C mode. + + + Added "bdf2pil.py", which converts BDF fonts into images with associated + metrics. This is definitely work in progress. For info, see description + in script for details. + + + Fixed a bug in the "ImageEnhance.py" module. + + + Fixed a bug in the netpbm save hack in "GifImagePlugin.py" + + + Fixed 90 and 270 degree rotation of rectangular images. + + + Properly reads 8-bit TIFF palette-color images. + + + Reads plane separated RGB and CMYK TIFF images. + + + Added driver debug mode. This is enabled by setting Image.DEBUG + to a non-zero value. Try the -D option to "pilfile.py" and see what + happens. + + + Don't crash on "atend" constructs in PostScript files. + + + Only the Image module imports _imaging directly. Other modules + should refer to the binding module as "Image.core". + + *** Changes from release 0.0 to 0.1 (b1) *** + + + A handbook is available (distributed separately). + + + The coordinate system is changed so that (0,0) is now located + in the upper left corner. This is in compliancy with ISO 12087 + and 90% of all other image processing and graphics libraries. + + + Modes "1" (bilevel) and "P" (palette) have been introduced. Note + that bilevel images are stored with one byte per pixel. + + + The Image "crop" and "paste" methods now accepts None as the + box argument, to refer to the full image (self, that is). + + + The Image "crop" method now works properly. + + + The Image "point" method is now available. You can use either a + lookup table or a function taking one argument. + + + The Image join function has been renamed to "merge". + + + An Image "composite" function has been added. It is identical + to copy() followed by paste(mask). + + + An Image "eval" function has been added. It is currently identical + to point(function); that is, only a single image can be processed. + + + A set of channel operations has been added. See the "ImageChops" + module, test_chops.py, and the handbook for details. + + + Added the "pilconvert" utility, which converts image files. Note + that the number of output formats are still quite restricted. + + + Added the "pilfile" utility, which quickly identifies image files + (without loading them, in most cases). + + + Added the "pilprint" utility, which prints image files to Postscript + printers. + + + Added a rudimentary version of the "pilview" utility, which is + simple image viewer based on Tk. Only File/Exit and Image/Next + works properly. + + + An interface to Tk has been added. See "Lib/ImageTk.py" and README + for details. + + + An interface to Jack Jansen's Img library has been added (thanks to + Jack). This allows you to read images through the Img extensions file + format handlers. See the file "Lib/ImgExtImagePlugin.py" for details. + + + Postscript printing is provided through the PSDraw module. See the + handbook for details. diff --git a/docs/INSTALL.txt b/docs/INSTALL.txt deleted file mode 100644 index 6e594f705..000000000 --- a/docs/INSTALL.txt +++ /dev/null @@ -1,185 +0,0 @@ - --------------------------------------------------------------------- -Build instructions (all platforms) --------------------------------------------------------------------- - -For a list of changes in this release, see the CHANGES document. - -0. If you're in a hurry, try this:: - - $ tar xvfz Imaging-1.1.7.tar.gz - $ cd Imaging-1.1.7 - $ python setup.py install - - If you prefer to know what you're doing, read on. - - -1. Prerequisites. - - If you need any of the features described below, make sure you - have the necessary libraries before building PIL. - - +----------------------+---------------------------------------------+ - | feature |library | - +----------------------+---------------------------------------------+ - | JPEG support |libjpeg (6a or 6b) | - | | | - | |http://www.ijg.org | - | |http://www.ijg.org/files/jpegsrc.v6b.tar.gz | - | |ftp://ftp.uu.net/graphics/jpeg/ | - +----------------------+---------------------------------------------+ - | | | - | PNG support |zlib (1.2.3 or later is recommended) | - | | | - | |http://www.gzip.org/zlib/ | - +----------------------+---------------------------------------------+ - | | | - | OpenType/TrueType |freetype2 (2.3.9 or later is recommended) | - | support | | - | |http://www.freetype.org | - | |http://freetype.sourceforge.net | - +----------------------+---------------------------------------------+ - | | | - | CMS support |littleCMS (1.1.5 or later is recommended) | - | |http://www.littlecms.com/ | - +----------------------+---------------------------------------------+ - - If you have a recent Linux version, the libraries provided with the - operating system usually work just fine. If some library is - missing, installing a prebuilt version (jpeg-devel, zlib-devel, - etc) is usually easier than building from source. For example, for - Ubuntu 9.10 (karmic), you can install the following libraries:: - - sudo apt-get install libjpeg62-dev - sudo apt-get install zlib1g-dev - sudo apt-get install libfreetype6-dev - sudo apt-get install liblcms1-dev - - If you're using Mac OS X, you can use the 'fink' tool to install - missing libraries (also see the Mac OS X section below). - - Similar tools are available for many other platforms. - - -2. To build under Python 1.5.2, you need to install the stand-alone - version of the distutils library: - - http://www.python.org/sigs/distutils-sig/download.html - - You can fetch distutils 1.0.2 from the Python source repository: - - svn export http://svn.python.org/projects/python/tags/Distutils-1_0_2/Lib/distutils/ - - For newer releases, the distutils library is included in the - Python standard library. - - NOTE: Version 1.1.7 is not fully compatible with 1.5.2. Some - more recent additions to the library may not work, but the core - functionality is available. - - -3. If you didn't build Python from sources, make sure you have - Python's build support files on your machine. If you've down- - loaded a prebuilt package (e.g. a Linux RPM), you probably - need additional developer packages. Look for packages named - "python-dev", "python-devel", or similar. For example, for - Ubuntu 9.10 (karmic), use the following command: - - sudo apt-get install python-dev - - -4. When you have everything you need, unpack the PIL distribution - (the file Imaging-1.1.7.tar.gz) in a suitable work directory:: - - $ cd MyExtensions # example - $ gunzip Imaging-1.1.7.tar.gz - $ tar xvf Imaging-1.1.7.tar - - -5. Build the library. We recommend that you do an in-place build, - and run the self test before installing:: - - $ cd Imaging-1.1.7 - $ python setup.py build_ext -i - $ python selftest.py - - During the build process, the setup.py will display a summary - report that lists what external components it found. The self- - test will display a similar report, with what external components - the tests found in the actual build files:: - - -------------------------------------------------------------------- - Pillow 1.5 ( PIL fork based on PIL 1.1.7 ) SETUP SUMMARY - -------------------------------------------------------------------- - platform darwin 2.6.6 (r266:84292, Nov 26 2010, 16:24:16) - [GCC 4.2.1 (Apple Inc. build 5664)] - -------------------------------------------------------------------- - --- TKINTER support available - --- JPEG support available - --- ZLIB (PNG/ZIP) support available - *** FREETYPE2 support not available - *** LITTLECMS support not available - -------------------------------------------------------------------- - - Make sure that the optional components you need are included. - - If the build script won't find a given component, you can edit the - setup.py file and set the appropriate ROOT variable. For details, - see instructions in the file. - - If the build script finds the component, but the tests cannot - identify it, try rebuilding *all* modules:: - - $ python setup.py clean - $ python setup.py build_ext -i - - -6. If the setup.py and selftest.py commands finish without any - errors, you're ready to install the library:: - - $ python setup.py install - - (depending on how Python has been installed on your machine, - you might have to log in as a superuser to run the 'install' - command, or use the 'sudo' command to run 'install'.) - - -Additional notes for Mac OS X -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -On Mac OS X you will usually install additional software such as -libjpeg or freetype with the "fink" tool, and then it ends up in -"/sw". If you have installed the libraries elsewhere, you may have -to tweak the "setup.py" file before building. - - -Additional notes for Windows -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -On Windows, you need to tweak the ROOT settings in the "setup.py" -file, to make it find the external libraries. See comments in the -file for details. - -Make sure to build PIL and the external libraries with the same -runtime linking options as was used for the Python interpreter -(usually /MD, under Visual Studio). - - -Note that most Python distributions for Windows include libraries -compiled for Microsoft Visual Studio. You can get the free Express -edition of Visual Studio from: - - http://www.microsoft.com/Express/ - -To build extensions using other tool chains, see the "Using -non-Microsoft compilers on Windows" section in the distutils handbook: - - http://www.python.org/doc/current/inst/non-ms-compilers.html - -For additional information on how to build extensions using the -popular MinGW compiler, see: - - http://mingw.org (compiler) - http://sebsauvage.net/python/mingw.html (build instructions) - http://sourceforge.net/projects/gnuwin32 (prebuilt libraries) - diff --git a/setup.py b/setup.py index 76a564975..fcc538351 100644 --- a/setup.py +++ b/setup.py @@ -455,7 +455,6 @@ setup( description='Python Imaging Library (fork)', long_description=( _read('README.rst') + '\n' + - _read('docs/INSTALL.txt') + '\n' + _read('docs/HISTORY.txt') + '\n' + _read('docs/CONTRIBUTORS.rst')).decode('utf-8'), author='Alex Clark (fork author)',