home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Extensions / Imaging / CHANGES < prev    next >
Encoding:
Text File  |  2000-06-23  |  27.6 KB  |  762 lines

  1.  
  2. The Python Imaging Library
  3. $Id: CHANGES,v 1.1.1.2 1999/01/13 09:39:27 sjoerd Exp $
  4.  
  5. ACKNOWLEDGEMENTS: David Ascher, Phil Austin, Anthony Baxter, Jan Blom,
  6. Roger Burnham, Charles E. Cash, Greg Coats, Fred Drake, Tim Docker,
  7. Robin Friedrich, Mark Hammond, Rob Hooft, Jack Jansen, Edward
  8. C. Jones, Richard Jones, Skip Montanaro, Fredrik Nehr, HÂkan Karlsson,
  9. Magnus K‰llstrˆm, Eric S. Raymond, Bertil Reinhammar, Toby
  10. J. Sargeant, Joel Shprentz, Perry Stoll, Paul Svensson, Ivan Tkatchev,
  11. Charles G. Waldman, and many others have contributed bug reports,
  12. patches and other code snippets, ideas, and inspiration for new
  13. features (many of which are yet to come!).
  14.  
  15. *** Changes from release 0.3b2 to 1.0b1 ***
  16.  
  17. Here's what's new in PIL 1.0b1:
  18.  
  19. (1.0b1 released)
  20.  
  21. + Added Toby J. Sargeant's quantization package.  To enable
  22.   quantization, use the "palette" option to "convert":
  23.  
  24.     imOut = im.convert("P", palette=Image.ADAPTIVE)
  25.  
  26.   This can be used with "L", "P", and "RGB" images.  In this
  27.   version, dithering cannot be used with adaptive palettes.
  28.  
  29.   Note: ADAPTIVE currently maps to median cut quantization
  30.   with 256 colours.  The quantization package also contains
  31.   a maximum coverage quantizer, which will be supported by
  32.   future versions of PIL.
  33.  
  34. + Added Eric S. Raymond's "pildriver" image calculator to the
  35.   distribution.  See the docstring for more information.
  36.  
  37. + The "offset" method no longer dumps core if given positive
  38.   offsets (from Charles Waldman).
  39.  
  40. + Fixed a resource leak that could cause ImageWin to run out of
  41.   GDI resources (from Roger Burnham).
  42.  
  43. + Added "arc", "chord", and "pieslice" methods to ImageDraw (inspired
  44.   by code contributed by Richard Jones).
  45.  
  46. + Fixed -f option to "pilconvert.py" (from Anthony Baxter)
  47.  
  48. + Added experimental 16-bit support, via modes "I;16" (little endian
  49.   data) and "I;16B" (big endian).  Only a few methods are guaranteed
  50.   to work on files using this format: "getpixel", "copy", "convert"
  51.   (to and from mode "I"), and "save" using the IM format.  The "new"
  52.   and "open" functions also work as expected.
  53.  
  54.   NOTE: ALL other operations are UNDEFINED on 16-bit images.
  55.  
  56. + Added XV thumbnail file handler (from Gene Cash).
  57.  
  58. + Fixed BMP image file handler to handle palette images with small
  59.   palettes (from Rob Hooft).
  60.  
  61. + Fixed Sun raster file handler for palette images (from Charles
  62.   Waldman).
  63.  
  64. + Improved various internal error messages.
  65.  
  66. + Fixed Path constructor to handle arbitrary sequence objects.  This
  67.   also affects the ImageDraw class (from Richard Jones).
  68.  
  69. + Fixed a bug in JpegDecode that caused PIL to report "decoder error
  70.   -2" for many progressive JPEG files (bug report and sample from
  71.   Magnus K‰llstrˆm).
  72.  
  73. + Fixed a bug in JpegImagePlugin that caused PIL to hang when loading
  74.   JPEG files using 16-bit quantization tables.
  75.  
  76. + The Image "transform" method now supports Image.QUAD transforms.
  77.   The data argument is an 8-tuple giving the upper left, lower
  78.   left, lower right, and upper right corner of the source quadri-
  79.   lateral.  Also added Image.MESH transform which takes a list
  80.   of quadrilaterals.
  81.  
  82. + The Image "resize", "rotate", and "transform" methods now support
  83.   Image.BILINEAR (2x2) and Image.BICUBIC (4x4) resampling filters.
  84.   Filters can be used with all transform methods.
  85.  
  86. + The ImageDraw "rectangle" method now includes both the right
  87.   and the bottom edges when drawing filled rectangles.
  88.  
  89. + The TGA decoder now works properly for runlength encoded images 
  90.   which have more than one byte per pixel.
  91.  
  92. + "getbands" on an YCbCr image now returns ("Y", "Cb", "Cr")
  93.  
  94. + Some file drivers didn't handle the optional "modify" argument
  95.   to the load method.  This resulted in exceptions when you used
  96.   "paste" (and other methods that modify an image in place) on a
  97.   newly opened file.
  98.  
  99. *** Changes from release 0.2 (b5) to 0.3 (b2) ***
  100.  
  101. (0.3b2 released)
  102.  
  103. The test suite includes 825 individual tests.
  104.  
  105. + An Image "getbands" method has been added.  It returns a tuple
  106.   containing the individual band names for this image.  To figure
  107.   out how many bands an image has, use "len(im.getbands())".
  108.  
  109. + An Image "putpixel" method has been added.
  110.  
  111. + The Image "point" method can now be used to convert "L" images
  112.   to any other format, via a lookup table.  That table should
  113.   contain 256 values for each band in the output image.
  114.  
  115. + Some file drivers (including FLI/FLC, GIF, and IM) accidently
  116.   overwrote the offset method with an internal attribute.  All
  117.   drivers have been updated to use private attributes where
  118.   possible.
  119.  
  120. + The Image "histogram" method now works for "I" and "F" images.
  121.   For these modes, PIL divides the range between the min and
  122.   max values used in the image into 256 bins.  You can also
  123.   pass in your own min and max values via the "extrema" option:
  124.  
  125.     h = im.histogram(extrema=(0, 255))
  126.  
  127. + An Image "getextrema" method has been added.  It returns the
  128.   min and max values used in the image. In this release, this
  129.   works for single band images only.
  130.  
  131. + Changed the PNG driver to load and save mode "I" images as
  132.   16-bit images.  When saving, values outside the range 0..65535
  133.   are clipped.
  134.  
  135. + Fixed ImageFont.py to work with the new "pilfont" compiler.
  136.  
  137. + Added JPEG "save" and "draft" support for mode "YCbCr" images.
  138.   Note that if you save an "YCbCr" image as a JPEG file and read
  139.   it back, it is read as an RGB file.  To get around this, you
  140.   can use the "draft" method:
  141.  
  142.     im = Image.open("color.jpg")
  143.     im.draft("YCbCr", im.size)
  144.  
  145. + Read "RGBA" TGA images.  Also fixed the orientation bug; all
  146.   images should now come out the right way.
  147.  
  148. + Changed mode name (and internal representation) from "YCrCb"
  149.   to "YCbCr" (!)
  150.   *** WARNING: MAY BREAK EXISTING CODE ***
  151.  
  152. (0.3b1 released)
  153.  
  154. The test suite includes 750 individual tests.
  155.  
  156. + The "pilfont" package is now included in the standard PIL
  157.   distribution.  The pilfont utility can be used to convert
  158.   X BDF and PCF raster font files to a format understood by
  159.   the ImageFont module.
  160.  
  161. + GIF files are now interlaced by default.  To write a
  162.   non-interlaced file, pass interlace=0 to the "save"
  163.   method.
  164.  
  165. + The default string format has changed for the "fromstring"
  166.   and "tostring" methods.
  167.   *** WARNING: MAY BREAK EXISTING CODE ***
  168.  
  169.   NOTE: If no extra arguments are given, the first line in
  170.   the string buffer is the top line of the image, instead of
  171.   the bottom line.  For RGB images, the string now contains
  172.   3 bytes per pixel instead of 4.  These changes were made
  173.   to make the methods compatible with the "fromstring"
  174.   factory function.
  175.  
  176.   To get the old behaviour, use the following syntax:
  177.  
  178.     data = im.tostring("raw", "RGBX", 0, -1)
  179.     im.fromstring(data, "raw", "RGBX", 0, -1)
  180.  
  181. + "new" no longer gives a MemoryError if the width or height
  182.   is zero (this only happened on platforms where malloc(0)
  183.   or calloc(0) returns NULL).
  184.  
  185. + "new" now adds a default palette object to "P" images.
  186.  
  187. + You can now convert directly between all modes supported by
  188.   PIL.  When converting colour images to "P", PIL defaults to
  189.   a "web" palette and dithering.  When converting greyscale
  190.   images to "1", PIL uses a thresholding and dithering.
  191.  
  192. + Added a "dither" option to "convert".  By default, "convert"
  193.   uses floyd-steinberg error diffusion for "P" and "1" targets,
  194.   so this option is only used to *disable* dithering. Allowed
  195.   values are NONE (no dithering) or FLOYDSTEINBERG (default).
  196.  
  197.     imOut = im.convert("P", dither=Image.NONE)
  198.  
  199. + Added a full set of "I" decoders.  You can use "fromstring"
  200.   (and file decoders) to read any standard integer type as an
  201.   "I" image.
  202.  
  203. + Added some support for "YCbCr" images (creation, conversion
  204.   from/to "L" and "RGB", IM YCC load/save)
  205.  
  206. + "getpixel" now works properly with fractional coordinates.
  207.  
  208. + ImageDraw "setink" now works with "I", "F", "RGB", "RGBA",
  209.   "RGBX", "CMYK", and "YCbCr" images.
  210.  
  211. + ImImagePlugin no longer attaches palettes to "RGB" images.
  212.  
  213. + Various minor fixes.
  214.  
  215. (0.3a4 released)
  216.  
  217. + Added experimental IPTC/NAA support.
  218.  
  219. + Eliminated AttributeError exceptions after "crop" (from
  220.   Skip Montanaro)
  221.  
  222. + Reads some uncompressed formats via memory mapping (this
  223.   is currently supported on Win32 only)
  224.  
  225. + Fixed some last minute glitches in the last alpha release
  226.   (Types instead of types in Image.py, version numbers, etc.)
  227.  
  228. + Eliminated some more bogus compiler warnings.
  229.  
  230. + Various fixes to make PIL compile and run smoother on Macs
  231.   (from Jack Jansen).
  232.  
  233. + Fixed "fromstring" and "tostring" for mode "I" images.
  234.  
  235. (0.3a3 released)
  236.  
  237. The test suite includes 530 individual tests.
  238.  
  239. + Eliminated unexpected side-effect in "paste" with matte.  "paste"
  240.   now works properly also if compiled with "gcc".
  241.  
  242. + Adapted to Python 1.5 (build issues only)
  243.  
  244. + Fixed the ImageDraw "point" method to draw also the last
  245.   point (!).
  246.  
  247. + Added "I" and "RGBX" support to Image.new.
  248.  
  249. + The plugin path is now properly prepended to the module search
  250.   path when a plugin module is imported.
  251.  
  252. + Added "draw" method to the ImageWin.Dib class.  This is used by
  253.   Topaz to print images on Windows printers.
  254.  
  255. + "convert" now supports conversions from "P" to "1" and "F".
  256.  
  257. + "paste" can now take a colour instead of an image as the first argument.
  258.   The colour must match the colour argument given to the new function, and
  259.   match the mode of the target image.
  260.  
  261. + Fixed "paste" to allow a mask also for mode "F" images.
  262.  
  263. + The BMP driver now saves mode "1" images.  When loading images, the mode
  264.   is set to "L" for 8-bit files with greyscale palettes, and to "P" for
  265.   other 8-bit files.
  266.  
  267. + The IM driver now reads and saves "1" images (file modes "0 1" or "L 1").
  268.  
  269. + The JPEG and GIF drivers now saves "1" images.  For JPEG, the image
  270.   is saved as 8-bit greyscale (it will load as mode "L").  For GIF, the
  271.   image will be loaded as a "P" image.
  272.  
  273. + Fixed a potential buffer overrun in the GIF encoder.
  274.  
  275. (0.3a2 released)
  276.  
  277. The test suite includes 400 individual tests.
  278.  
  279. + Improvements to the test suite revealed a number of minor bugs, which
  280.   are all fixed.  Note that crop/paste, 32-bit ImageDraw, and ImageFont
  281.   are still weak spots in this release.
  282.  
  283. + Added "putpalette" method to the Image class.  You can use this
  284.   to add or modify the palette for "P" and "L" images.  If a palette
  285.   is added to an "L" image, it is automatically converted to a "P"
  286.   image.
  287.  
  288. + Fixed ImageDraw to properly handle 32-bit image memories
  289.   ("RGB", "RGBA", "CMYK", "F")
  290.  
  291. + Fixed "fromstring" and "tostring" not to mess up the mode attribute
  292.   in default mode.
  293.  
  294. + Changed ImPlatform.h to work on CRAY's (don't have one at home, so I
  295.   haven't tried it).  The previous version assumed that either "short"
  296.   or "int" were 16-bit wide. PIL still won't compile on platforms where
  297.   neither "short", "int" nor "long" are 32-bit wide.
  298.  
  299. + Added file= and data= keyword arguments to PhotoImage and BitmapImage.
  300.   This allows you to use them as drop-in replacements for the corre-
  301.   sponding Tkinter classes.
  302.  
  303. + Removed bogus references to the crack coder (ImagingCrack).
  304.  
  305. (0.3a1 released)
  306.  
  307. + Make sure image is loaded in "tostring".
  308.  
  309. + Added floating point packer (native 32-bit floats only).
  310.  
  311. *** Changes from release 0.1b1 to 0.2 (b5) ***
  312.  
  313. + Modified "fromstring" and "tostring" methods to use file codecs.
  314.   Also added "fromstring" factory method to create an image directly
  315.   from data in a string.
  316.  
  317. + Added support for 32-bit floating point images (mode "F").  You
  318.   can convert between "L" and "F" images, and apply a subset of the
  319.   available image processing methods on the "F" image.  You can also
  320.   read virtually any data format into a floating point image memory;
  321.   see the section on "Decoding Floating Point Data" in the handbook
  322.   for more information.
  323.  
  324. (0.2b5 released; on windows only)
  325.  
  326. + Fixed the tobitmap() method to work properly for small bitmaps.
  327.  
  328. + Added RMS and standard deviation to the ImageStat.Stat class.  Also
  329.   modified the constructor to take an optional feature mask, and also
  330.   to accept either an image or a list containing the histogram data.
  331.  
  332. + The BitmapImage code in ImageTk can now use a special bitmap
  333.   decoder, which has to be patched into Tk.  See the "Tk/pilbitmap.txt"
  334.   file for details.  If not installed, bitmaps are transferred to Tk as
  335.   XBM strings.
  336.  
  337. + The PhotoImage code in ImageTk now uses a Tcl command ("PyImagingPaste")
  338.   instead of a special image type.  This gives somewhat better performance,
  339.   and also allows PIL to support transparency.
  340.   *** WARNING: TKAPPINIT MUST BE MODIFIED ***
  341.  
  342. + ImageTk now honours the alpha layer in RGBA images.  Only fully
  343.   transparent pixels are made transparent (that is, the alpha layer
  344.   is treated as a mask).  To treat the alpha laters as a matte, you
  345.   must paste the image on the background before handing it over to
  346.   ImageTk.
  347.  
  348. + Added McIdas reader (supports 8-bit images only).
  349.  
  350. + PIL now preloads drivers for BMP, GIF, JPEG, PPM, and TIFF.  As
  351.   long as you only load and save these formats, you don't have to
  352.   wait for a full scan for drivers.  To force scanning, call the
  353.   Image.init() function.
  354.  
  355. + The "seek" and "tell" methods are now always available, also for
  356.   single-frame images.
  357.  
  358. + Added optional mask argument to histogram method.  The mask may
  359.   be an "1" or "L" image with the same size as the original image.
  360.   Only pixels where the mask is non-zero are included in the
  361.   histogram.
  362.  
  363. + The paste method now allows you to specify only the lower left
  364.   corner (a 2-tuple), instead of the full region (a 4-tuple).
  365.  
  366. + Reverted to old plugin scanning model; now scans all directory
  367.   names in the path when looking for plugins.
  368.  
  369. + Added PIXAR raster support.  Only uncompressed ("dumped") RGB
  370.   images can currently be read (based on information provided
  371.   by Greg Coats).
  372.  
  373. + Added FlashPix (FPX) read support.  Reads all pixel formats, but
  374.   only the highest resolution is read, and the viewing transform is
  375.   currently ignored.
  376.  
  377. + Made PNG encoding somewhat more efficient in "optimize" mode; a
  378.   bug in 0.2b4 didn't enable all predictor filters when optimized
  379.   storage were requested.
  380.  
  381. + Added Microsoft Image Composer (MIC) read support.  When opened,
  382.   the first sprite in the file is loaded.  You can use the seek method
  383.   to load additional sprites from the file.
  384.  
  385. + Properly reads "P" and "CMYK" PSD images.
  386.  
  387. + "pilconvert" no longer optimizes by default; use the -o option to
  388.   make the file as small as possible (at the expense of speed); use
  389.   the -q option to set the quality when compressing to JPEG.
  390.  
  391. + Fixed "crop" not to drop the palette for "P" images.
  392.  
  393. + Added and verified FLC support.
  394.  
  395. + Paste with "L" or "RGBA" alpha is now several times faster on most
  396.   platforms.
  397.  
  398. + Changed Image.new() to initialize the image to black, as described
  399.   in the handbook.  To get an uninitialized image, use None as the
  400.   colour.
  401.  
  402. + Fixed the PDF encoder to produce a valid header; Acrobat no longer
  403.   complains when you load PDF images created by PIL.
  404.  
  405. + PIL only scans fully-qualified directory names in the path when
  406.   looking for plugins.
  407.   *** WARNING: MAY BREAK EXISTING CODE ***
  408.  
  409. + Faster implementation of "save" used when filename is given,
  410.   or when file object has "fileno" and "flush" methods.
  411.  
  412. + Fixed the "crop" method not to crash if the region extends
  413.   outside the source image.
  414.  
  415. + Eliminated a massive memory leak in the "save" function.
  416.  
  417. + The GIF decoder doesn't crash if the code size is set to an illegal
  418.   value.  This could happen since another bug didn't handle local
  419.   palettes properly if they didn't have the same size as the
  420.   global palette (not very common).
  421.  
  422. + Added predictor support (TIFF 6.0 section 14) to the TIFF decoder.
  423.  
  424. + Fixed palette and padding problems in BMP driver.  Now properly
  425.   writes "1", "L", "P" and "RGB" images.
  426.  
  427. + Fixed getpixel()/getdata() to return correct pixel values.
  428.  
  429. + Added PSD (PhotoShop) read support.  Reads both uncompressed
  430.   and compressed images of most types.
  431.  
  432. + Added GIF write support (writes "uncompressed" GIF files only,
  433.   due to unresolvable licensing issues).  The "gifmaker.py" script
  434.   can be used to create GIF animations.
  435.  
  436. + Reads 8-bit "L" and "P" TGA images.  Also reads 16-bit "RGB"
  437.   images.
  438.  
  439. + Added FLI read support.  This driver has only been tested
  440.   on a few FLI samples.
  441.  
  442. + Reads 2-bit and 4-bit PCX images.
  443.  
  444. + Added MSP read and write support.  Both version 1 and 2 can be
  445.   read, but only version 1 (uncompressed) files are written.
  446.  
  447. + Fixed a bug in the FLI/FLC identification code that caused the
  448.   driver to raise an exception when parsing valid FLI/FLC files.
  449.  
  450. + Improved performance when loading file format plugins, and when
  451.   opening files.
  452.  
  453. + Added GIF animation support, via the "seek" and "tell" methods.
  454.   You can use "player.py" to play an animated GIF file.
  455.  
  456. + Removed MNG support, since the spec is changing faster than I
  457.   can change the code.  I've added support for the experimental
  458.   ARG format instead.  Contact me for more information on this
  459.   format.
  460.  
  461. + Added keyword options to the "save" method.  The following options
  462.   are currently supported:
  463.  
  464.       format    option        description
  465.       --------------------------------------------------------
  466.       JPEG    optimize    minimize output file at the
  467.                 expense of compression speed.
  468.  
  469.       JPEG    progressive    enable progressive output. the
  470.                 option value is ignored.
  471.  
  472.       JPEG    quality        set compression quality (1-100).
  473.                 the default value is 75.
  474.  
  475.       JPEG    smooth        smooth dithered images.  value
  476.                 is strengh (1-100).  default is
  477.                 off (0).
  478.  
  479.       PNG    optimize    minimize output file at the
  480.                 expense of compression speed.
  481.  
  482.   Expect more options in future releases.  Also note that
  483.   file writers silently ignore unknown options.
  484.  
  485. + Plugged memory leaks in the PNG and TIFF decoders.
  486.  
  487. + Added PNG write support.
  488.  
  489. + (internal) RGB unpackers and converters now set the pad byte
  490.   to 255 (full opacity).
  491.  
  492. + Properly handles the "transparency" property for GIF, PNG
  493.   and XPM files.
  494.  
  495. + Added a "putalpha" method, allowing you to attach a "1" or "L"
  496.   image as the alpha layer to an "RGBA" image.
  497.  
  498. + Various improvements to the sample scripts:
  499.  
  500.   "pilconvert"  Carries out some extra tricks in order to make
  501.         the resulting file as small as possible.
  502.  
  503.   "explode"    (NEW) Split an image sequence into individual frames.
  504.  
  505.   "gifmaker"    (NEW) Convert a sequence file into a GIF animation.
  506.         Note that the GIF encoder create "uncompressed" GIF
  507.         files, so animations created by this script are
  508.         rather large (typically 2-5 times the compressed
  509.         sizes).
  510.  
  511.   "image2py"    (NEW) Convert a single image to a python module.  See
  512.         comments in this script for details.
  513.  
  514.   "player"    If multiple images are given on the command line,
  515.         they are interpreted as frames in a sequence.  The
  516.         script assumes that they all have the same size.
  517.         Also note that this script now can play FLI/FLC
  518.         and GIF animations.
  519.  
  520.         This player can also execute embedded Python
  521.         animation applets (ARG format only).
  522.  
  523.   "viewer"    Transparent images ("P" with transparency property,
  524.         and "RGBA") are superimposed on the standard Tk back-
  525.         ground.
  526.  
  527. + Fixed colour argument to "new".  For multilayer images, pass a
  528.   tuple: (Red, Green, Blue), (Red, Green, Blue, Alpha), or (Cyan,
  529.   Magenta, Yellow, Black).
  530.  
  531. + Added XPM (X pixmap) read support.
  532.  
  533. (0.2b3 released)
  534.  
  535. + Added MNG (multi-image network graphics) read support.  "Ming"
  536.   is a proposed animation standard, based on the PNG file format.
  537.  
  538.   You can use the "player" sample script to display some flavours
  539.   of this format.  The MNG standard is still under development, 
  540.   as is this driver.  More information, including sample files,
  541.   can be found at <ftp://swrinde.nde.swri.edu/pub/mng>
  542.  
  543. + Added a "verify" method to images loaded from file.  This method
  544.   scans the file for errors, without actually decoding the image
  545.   data, and raises a suitable exception if it finds any problems.
  546.   Currently implemented for PNG and MNG files only.
  547.  
  548. + Added support for interlaced GIF images.
  549.  
  550. + Added PNG read support -- if linked with the ZLIB compression library,
  551.   PIL reads all kinds of PNG images, except interlaced files.
  552.  
  553. + Improved PNG identification support -- doesn't mess up on unknown
  554.   chunks, identifies all possible PNG modes, and verifies checksum
  555.   on PNG header chunks.
  556.  
  557. + Added an experimental reader for placable Windows Meta Files (WMF).
  558.   This reader is still very incomplete, but it illustrates how PIL's
  559.   drawing capabilities can be used to render vector and metafile
  560.   formats.
  561.  
  562. + Added restricted drivers for images from Image Tools (greyscale
  563.   only) and LabEye/IFUNC (common interchange modes only).
  564.  
  565. + Some minor improvements to the sample scripts provided in the
  566.   "Scripts" directory.
  567.  
  568. + The test images have been moved to the "Images" directory.
  569.  
  570. (0.2b2 released)
  571. (0.2b1 released; Windows only)
  572.  
  573. + Fixed filling of complex polygons.  The ImageDraw "line" and
  574.   "polygon" methods also accept Path objects.
  575.  
  576. + The ImageTk "PhotoImage" object can now be constructed directly
  577.   from an image.  You can also pass the object itself to Tkinter,
  578.   instead of using the "image" attribute.  Finally, using "paste"
  579.   on a displayed image automatically updates the display.
  580.  
  581. + The ImageTk "BitmapImage" object allows you to create transparent
  582.   overlays from 1-bit images.  You can pass the object itself to
  583.   Tkinter.  The constructor takes the same arguments as the Tkinter
  584.   BitmapImage class; use the "foreground" option to set the colour
  585.   of the overlay.
  586.  
  587. + Added a "putdata" method to the Image class.  This can be used to
  588.   load a 1-layer image with data from a sequence object or a string.
  589.   An optional floating point scale and offset can be used to adjust
  590.   the data to fit into the 8-bit pixel range.  Also see the "getdata"
  591.   method.
  592.  
  593. + Added the EXTENT method to the Image "transform" method.  This can
  594.   be used to quickly crop, stretch, shrink, or mirror a subregion
  595.   from another image.
  596.  
  597. + Adapted to Python 1.4.
  598.  
  599. + Added a project makefile for Visual C++ 4.x.  This allows you to
  600.   easily build a dynamically linked version of PIL for Windows 95
  601.   and NT.
  602.  
  603. + A Tk "booster" patch for Windows is available.  It gives dramatic
  604.   performance improvements for some displays.  Has been tested with
  605.   Tk 4.2 only, but is likely to work with Tk 4.1 as well.  See the Tk
  606.   subdirectory for details.
  607.  
  608. + You can now save 1-bit images in the XBM format.  In addition, the
  609.   Image class now provides a "tobitmap" method which returns a string
  610.   containing an XBM representation of the image.  Quite handy to use
  611.   with Tk.
  612.  
  613. + More conversions, including "RGB" to "1" and more.
  614.  
  615. (0.2a1 released)
  616.  
  617. + Where earlier versions accepted lists, this version accepts arbitrary
  618.   Python sequences (including strings, in some cases).  A few resource
  619.   leaks were plugged in the process.
  620.  
  621. + The Image "paste" method now allows the box to extend outside
  622.   the target image.  The size of the box, the image to be pasted,
  623.   and the optional mask must still match.
  624.  
  625. + The ImageDraw module now supports filled polygons, outlined and
  626.   filled ellipses, and text.  Font support is rudimentary, though.
  627.  
  628. + The Image "point" method now takes an optional mode argument,
  629.   allowing you to convert the image while translating it.  Currently,
  630.   this can only be used to convert "L" or "P" images to "1" images
  631.   (creating thresholded images or "matte" masks).
  632.  
  633. + An Image "getpixel" method has been added.  For single band images,
  634.   it returns the pixel value at a given position as an integer.
  635.   For n-band images, it returns an n-tuple of integers.
  636.  
  637. + An Image "getdata" method has been added.  It returns a sequence
  638.   object representing the image as a 1-dimensional array.  Only len()
  639.   and [] can be used with this sequence.  This method returns a
  640.   reference to the existing image data, so changes in the image
  641.   will be immediately reflected in the sequence object.
  642.  
  643. + Fixed alignment problems in the Windows BMP writer.
  644.  
  645. + If converting an "RGB" image to "RGB" or "L", you can give a second
  646.   argument containing a colour conversion matrix.
  647.  
  648. + An Image "getbbox" method has been added.  It returns the bounding
  649.   box of data in an image, considering the value 0 as background.
  650.  
  651. + An Image "offset" method has been added.  It returns a new image
  652.   where the contents of the image have been offset the given distance
  653.   in X and/or Y direction.  Data wraps between edges.
  654.  
  655. + Saves PDF images.  The driver creates a binary PDF 1.1 files, using
  656.   JPEG compression for "L", "RGB", and "CMYK" images, and hex encoding
  657.   (same as for PostScript) for other formats.
  658.  
  659. + The paste method now accepts "1" masks.  Zero means transparent,
  660.   any other pixel value means opaque.  This is faster than using an
  661.   "L" transparency mask.
  662.  
  663. + Properly writes EPS files (and properly prints images to postscript
  664.   printers as well).
  665.  
  666. + Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR
  667.   files.  Cursor animations are not supported.
  668.  
  669. + Fixed alignment problems in the Sun raster loader.
  670.  
  671. + Added "draft" and "thumbnail" methods.  The draft method is used
  672.   to optimize loading of JPEG and PCD files, the thumbnail method is
  673.   used to create a thumbnail representation of an image.
  674.  
  675. + Added Windows display support, via the ImageWin class (see the
  676.   handbook for details).
  677.  
  678. + Added raster conversion for EPS files.  This requires GNU or Aladdin
  679.   Ghostscript, and probably works on UNIX only.
  680.  
  681. + Reads PhotoCD (PCD) images.  The base resolution (768x512) can be
  682.   read from a PhotoCD file.
  683.  
  684. + Eliminated some compiler warnings.  Bindings now compile cleanly in C++
  685.   mode.  Note that the Imaging library itself must be compiled in C mode.
  686.  
  687. + Added "bdf2pil.py", which converts BDF fonts into images with associated
  688.   metrics.  This is definitely work in progress.  For info, see description
  689.   in script for details.
  690.  
  691. + Fixed a bug in the "ImageEnhance.py" module.
  692.  
  693. + Fixed a bug in the netpbm save hack in "GifImagePlugin.py"
  694.  
  695. + Fixed 90 and 270 degree rotation of rectangular images.
  696.  
  697. + Properly reads 8-bit TIFF palette-color images.
  698.  
  699. + Reads plane separated RGB and CMYK TIFF images.
  700.  
  701. + Added driver debug mode.  This is enabled by setting Image.DEBUG
  702.   to a non-zero value.  Try the -D option to "pilfile.py" and see what
  703.   happens.
  704.  
  705. + Don't crash on "atend" constructs in PostScript files.
  706.  
  707. + Only the Image module imports _imaging directly.  Other modules
  708.   should refer to the binding module as "Image.core".
  709.  
  710. *** Changes from release 0.0 to 0.1 (b1) ***
  711.  
  712. + A handbook is available (distributed separately).
  713.  
  714. + The coordinate system is changed so that (0,0) is now located
  715.   in the upper left corner.  This is in compliancy with ISO 12087
  716.   and 90% of all other image processing and graphics libraries.
  717.  
  718. + Modes "1" (bilevel) and "P" (palette) have been introduced.  Note
  719.   that bilevel images are stored with one byte per pixel.
  720.  
  721. + The Image "crop" and "paste" methods now accepts None as the
  722.   box argument, to refer to the full image (self, that is).
  723.  
  724. + The Image "crop" method now works properly.
  725.  
  726. + The Image "point" method is now available.  You can use either a
  727.   lookup table or a function taking one argument.
  728.  
  729. + The Image join function has been renamed to "merge".
  730.  
  731. + An Image "composite" function has been added.  It is identical
  732.   to copy() followed by paste(mask).
  733.  
  734. + An Image "eval" function has been added.  It is currently identical
  735.   to point(function); that is, only a single image can be processed.
  736.  
  737. + A set of channel operations has been added.  See the "ImageChops"
  738.   module, test_chops.py, and the handbook for details.
  739.  
  740. + Added the "pilconvert" utility, which converts image files.  Note
  741.   that the number of output formats are still quite restricted.
  742.  
  743. + Added the "pilfile" utility, which quickly identifies image files
  744.   (without loading them, in most cases).
  745.  
  746. + Added the "pilprint" utility, which prints image files to Postscript
  747.   printers.
  748.  
  749. + Added a rudimentary version of the "pilview" utility, which is
  750.   simple image viewer based on Tk.  Only File/Exit and Image/Next
  751.   works properly.
  752.  
  753. + An interface to Tk has been added.  See "Lib/ImageTk.py" and README
  754.   for details.
  755.  
  756. + An interface to Jack Jansen's Img library has been added (thanks to
  757.   Jack).  This allows you to read images through the Img extensions file
  758.   format handlers.  See the file "Lib/ImgExtImagePlugin.py" for details.
  759.  
  760. + Postscript printing is provided through the PSDraw module.  See the
  761.   handbook for details.
  762.