Changelog
### 5.1.0
```
------------------
- Close fp before return in ImagingSavePPM 3061
[kathryndavies]
- Added documentation for ICNS append_images 3051
[radarhere]
- Docs: Move intro text below its header 3021
[hugovk]
- CI: Rename appveyor.yml as .appveyor.yml 2978
[hugovk]
- Fix TypeError for JPEG2000 parser feed 3042
[hugovk]
- Certain corrupted jpegs can result in no data read 3023
[kkopachev]
- Add support for BLP file format 3007
[jleclanche]
- Simplify version checks 2998
[hugovk]
- Fix "invalid escape sequence" warning on Python 3.6+ 2996
[timgraham]
- Allow append_images to set .icns scaled images 3005
[radarhere]
- Support appending to existing PDFs 2965
[vashek]
- Fix and improve efficient saving of ICNS on macOS 3004
[radarhere]
- Build: Enable pip cache in AppVeyor build 3009
[thijstriemstra]
- Trim trailing whitespace 2985
[Metallicow]
- Docs: Correct reference to Image.new method 3000
[radarhere]
- Rearrange ImageFilter classes into alphabetical order 2990
[radarhere]
- Test: Remove duplicate line 2983
[radarhere]
- Build: Update AppVeyor PyPy version 3003
[radarhere]
- Tiff: Open 8 bit Tiffs with 5 or 6 channels, discarding extra channels 2938
[homm]
- Readme: Added Twitter badge 2930
[hugovk]
- Removed __main__ code from ImageCms 2942
[radarhere]
- Test: Changed assert statements to unittest calls 2961
[radarhere]
- Depends: Update libimagequant to 2.11.10, raqm to 0.5.0, freetype to 2.9 3036, 3017, 2957
[radarhere]
- Remove _imaging.crc32 in favor of builtin Python crc32 implementation 2935
[wiredfool]
- Move Tk directory to src directory 2928
[hugovk]
- Enable pip cache in Travis CI 2933
[jdufresne]
- Remove unused and duplicate imports 2927
[radarhere]
- Docs: Changed documentation references to 2.x to 2.7 2921
[radarhere]
- Fix memory leak when opening webp files 2974
[wiredfool]
- Setup: Fix "TypeError: 'NoneType' object is not iterable" for PPC and CRUX 2951
[hugovk]
- Setup: Add libdirs for ppc64le and armv7l 2968
[nehaljwani]
```
### 5.0.0
```
------------------
- Docs: Added docstrings from documentation 2914
[radarhere]
- Test: Switch from nose to pytest 2815
[hugovk]
- Rework Source directory layout, preventing accidental import of PIL. 2911
[wiredfool]
- Dynamically link libraqm 2753
[wiredfool]
- Removed scripts directory 2901
[wiredfool]
- TIFF: Run all compressed tiffs through libtiff decoder 2899
[wiredfool]
- GIF: Add disposal option when saving GIFs 2902
[linnil1, wiredfool]
- EPS: Allow for an empty line in EPS header data 2903
[radarhere]
- PNG: Add support for sRGB and cHRM chunks, permit sRGB when no iCCP chunk present 2898
[wiredfool]
- Dependencies: Update Tk Tcl to 8.6.8 2905
[radarhere]
- Decompression bomb error now raised for images 2x larger than a decompression bomb warning 2583
[wiredfool]
- Test: avoid random failure in test_effect_noise 2894
[hugovk]
- Increased epsilon for test_file_eps.py:test_showpage due to Arch update. 2896
[wiredfool]
- Removed check parameter from _save in BmpImagePlugin, PngImagePlugin, ImImagePlugin, PalmImagePlugin, and PcxImagePlugin. 2873
[radarhere]
- Make PngImagePlugin.add_text() zip argument type bool 2890
[jdufresne]
- Depends: Updated libwebp to 0.6.1 2880
[radarhere]
- Remove unnecessary bool() calls in Image.registered_extensions and skipKnownBadTests 2891
[jdufresne]
- Fix count of BITSPERSAMPLE items in broken TIFF files 2883
[homm]
- Fillcolor parameter for Image.Transform 2852
[wiredfool]
- Test: Display differences for test failures 2862
[wiredfool]
- Added executable flag to file with shebang line 2884
[radarhere]
- Setup: Specify compatible Python versions for pip 2877
[hugovk]
- Dependencies: Updated libimagequant to 2.11.4 2878
[radarhere]
- Setup: Warn if trying to install for Py3.7 on Windows 2855
[hugovk]
- Doc: Fonts can be loaded from a file-like object, not just filename 2861
[robin-norwood]
- Add eog support for Ubuntu Image Viewer 2864
[NafisFaysal]
- Test: Test on 3.7-dev on Travis.ci 2870
[hugovk]
- Dependencies: Update libtiff to 4.0.9 2871
[radarhere]
- Setup: Replace deprecated platform.dist with file existence check 2869
[wiredfool]
- Build: Fix setup.py on Debian 2853
[wiredfool]
- Docs: Correct error in ImageDraw documentation 2858
[meribold]
- Test: Drop Ubuntu Precise, Fedora 24, Fedora 25, add Fedora 27, Centos 7, Amazon v2 CI Support 2854, 2843, 2895, 2897
[wiredfool]
- Dependencies: Updated libimagequant to 2.11.3 2849
[radarhere]
- Test: Fix test_image.py to use tempfile 2841
[radarhere]
- Replace PIL.OleFileIO deprecation warning with descriptive ImportError 2833
[hugovk]
- WebP: Add support for animated WebP files 2761
[jd20]
- PDF: Set encoderinfo for images when saving multi-page PDF. Fixes 2804. 2805
[ixio]
- Allow the olefile dependency to be optional 2789
[jdufresne]
- GIF: Permit LZW code lengths up to 12 bits in GIF decode 2813
[wiredfool]
- Fix unterminated string and unchecked exception in _font_text_asBytes. 2825
[wiredfool]
- PPM: Use fixed list of whitespace, rather relying on locale, fixes 272. 2831
[markmiscavage]
- Added support for generators when using append_images 2829, 2835
[radarhere]
- Doc: Correct PixelAccess.rst 2824
[hasahmed]
- Depends: Update raqm to 0.3.0 2822
[radarhere]
- Docs: Link to maintained version of aggdraw 2809
[hugovk]
- Include license file in the generated wheel packages 2801
[jdufresne]
- Depends: Update openjpeg to 2.3.0 2791
[radarhere]
- Add option to Makefile to build and install with C coverage 2781
[hugovk]
- Add context manager support to ImageFile.Parser and PngImagePlugin.ChunkStream 2793
[radarhere]
- ImageDraw.textsize: fix zero length error 2788
[wiredfool, hugovk]
```
### 4.3.0
```
------------------
- Fix warning on pointer cast in isblock 2775, 2778
[cgohlke]
- Doc: Added macOS High Sierra tested Pillow version 2777
[radarhere]
- Use correct Windows handle type on 64 bit in imagingcms 2774
[cgohlke]
- 64 Bit Windows fix for block storage 2773
[cgohlke]
- Fix "expression result unused" warning 2764
[radarhere]
- Add 16bit Read/Write and RLE read support to SgiImageFile 2769
[jbltx, wiredfool]
- Block & array hybrid storage 2738
[homm]
- Common seek frame position check 1849
[radarhere]
- Doc: Add note about aspect ratio to Image thumbnail script 2281
[wilsonge]
- Fix ValueError: invalid version number '1.0.0rc1' in scipy release candidate 2771
[cgohlke]
- Unfreeze requirements.txt 2766
[hugovk]
- Test: ResourceWarning tests 2756
[hugovk]
- Use n_frames to determine is_animated if possible 2315
[radarhere]
- Doc: Corrected parameters in documentation 2768
[radarhere]
- Avoid unnecessary Image operations 1891
[radarhere]
- Added register_extensions method 1860
[radarhere]
- Fix TIFF support for I;16S, I;16BS, and I;32BS rawmodes 2748
[wiredfool]
- Fixed doc syntax in ImageDraw 2752
[radarhere]
- Fixed support for building on Windows/msys2. Added Appveyor CI coverage for python3 on msys2 2476
[wiredfool]
- Fix ValueError in Exif/Tiff IFD 2719
[wiredfool]
- Use pathlib2 for Path objects on Python < 3.4 2291
[asergi]
- Export only required properties in unsafe_ptrs 2740
[homm]
- Alpha composite fixes 2709
[homm]
- Faster Transpose operations, added 'Transverse' option 2730
[homm]
- Deprecate ImageOps undocumented functions gaussian_blur, gblur, unsharp_mask, usm and box_blur in favor of ImageFilter implementations 2735
[homm]
- Dependencies: Updated freetype to 2.8.1 2741
[radarhere]
- Bug: Player skipped first image 2742
[radarhere]
- Faster filter operations for Kernel, Gaussian, and Unsharp Mask filters 2679
[homm]
- EPS: Add showpage to force rendering of some EPS images 2636
[kaplun]
- DOC: Fix type of palette parameter in Image.quantize. 2703
[kkopachev]
- DOC: Fix Ico docs to match code 2712
[hugovk]
- Added file pointer save to SpiderImagePlugin 2647
[radarhere]
- Add targa version 2 footer 2713
[jhultgre]
- Removed redundant lines 2714
[radarhere]
- Travis CI: Use default pypy/pypy3 2721
[hugovk]
- Fix for SystemError when rendering an empty string, added in 4.2.0 2706
[wiredfool]
- Fix for memory leaks in font handling added in 4.2.0 2634
[wiredfool]
- Tests: cleanup, more tests. Fixed WMF save handler 2689
[radarhere]
- Removed debugging interface for Image.core.grabclipboard 2708
[radarhere]
- Doc syntax fix 2710
[radarhere]
- Faster packing and unpacking for RGB, LA, and related storage modes 2693
[homm]
- Use RGBX rawmode for RGB JPEG images where possible 1989
[homm]
- Remove palettes from non-palette modes in _new 2702
[wiredfool]
- Delete transparency info when convert'ing RGB/L to RGBA 2633
[olt]
- Code tweaks to ease type annotations 2687
[neiljp]
- Fixed incorrect use of 's' to byteslike object 2691
[wiredfool]
- Fix JPEG subsampling labels for subsampling=2 2698
[homm]
- Region of interest (box) for resampling 2254
[homm]
- Basic support for Termux (android) in setup.py 2684
[wiredfool]
- Bug: Fix Image.fromarray for numpy.bool type. 2683
[wiredfool]
- CI: Add Fedora 24 and 26 to Docker tests
[wiredfool]
- JPEG: Fix ZeroDivisionError when EXIF contains invalid DPI (0/0). 2667
[vytisb]
- Depends: Updated openjpeg to 2.2.0 2669
[radarhere]
- Depends: Updated Tk Tcl to 8.6.7 2668
[radarhere]
- Depends: Updated libimagequant to 2.10.2 2660
[radarhere]
- Test: Added test for ImImagePlugin tell() 2675
[radarhere]
- Test: Additional tests for SGIImagePlugin 2659
[radarhere]
- New Image.getchannel method 2661
[homm]
- Remove unused im.copy2 and core.copy methods 2657
[homm]
- Fast Image.merge() 2677
[homm]
- Fast Image.split() 2676
[homm]
- Fast image allocation 2655
[homm]
- Storage cleanup 2654
[homm]
- FLI: Use frame count from FLI header 2674
[radarhere]
- Test: Test animated FLI file 2650
[hugovk]
- Bug: Fixed uninitialized memory in bc5 decoding 2648
[ifeherva]
- Moved SgiImagePlugin save error to before the start of write operations 2646
[radarhere]
- Move createfontdatachunk.py so isn't installed globally 2645
[hugovk]
- Bug: Fix unexpected keyword argument 'align' 2641
[hugovk]
- Add newlines to error message for clarity 2640
[hugovk]
- Docs: Updated redirected URL 2637
[radarhere]
- Bug: Fix JPEG DPI when EXIF is invalid 2632
[wiredfool]
- Bug: Fix for font getsize on empty string 2624
[radarhere]
- Docs: Improved ImageDraw documentation 2626
[radarhere]
- Docs: Corrected alpha_composite args documentation 2627
[radarhere]
- Docs: added the description of the filename attribute to images.rst 2621
[dasdachs]
- Dependencies: Updated libimagequant to 2.10.1 2616
[radarhere]
- PDF: Renamed parameter to not shadow built-in dict 2612
[kijeong]
```
### 4.2.1
```
------------------
- CI: Fix version specification and test on CI for PyPy/Windows 2608
[wiredfool]
```
### 4.2.0
```
------------------
- Doc: Clarified Image.save:append_images documentation 2604
[radarhere]
- CI: Amazon Linux and Centos6 docker images added to TravisCI 2585
[wiredfool]
- Image.alpha_composite added 2595
[wiredfool]
- Complex Text Support 2576
[ShamsaHamed, Fahad-Alsaidi, wiredfool]
- Added threshold parameter to ImageDraw.floodfill 2599
[nediamond]
- Added dBATCH parameter to ghostscript command 2588
[radarhere]
- JPEG: Adjust buffer size when icc_profile > MAXBLOCK 2596
[Darou]
- Specify Pillow Version in one place 2517
[wiredfool]
- CI: Change the owner of the TRAVIS_BUILD_DIR, fixing broken docker runs 2587
[wiredfool]
- Fix truncated PNG loading for some images, Fix memory leak on truncated PNG images. 2541, 2598
[homm]
- Add decompression bomb check to Image.crop 2410
[wiredfool]
- ImageFile: Ensure that the `err_code` variable is initialized in case of exception. 2363
[alexkiro]
- Tiff: Support append_images for saving multipage TIFFs 2406
[blochl]
- Doc: Clarify that draft is only implemented for JPEG and PCD 2409
[wiredfool]
- Test: MicImagePlugin 2447
[hugovk]
- Use round() instead of floor() to eliminate zero coefficients in resample 2558
[homm]
- Remove deprecated code 2549
[hugovk]
- Added append_images to PDF saving 2526
[radarhere]
- Remove unused function core image function new_array 2548
[hugovk]
- Remove unnecessary calls to dict.keys() 2551
[jdufresne]
- Add more ImageDraw.py tests and remove unused Draw.c code 2533
[hugovk]
- Test: More tests for ImageMorph 2554
[hugovk]
- Test: McIDAS area file 2552
[radarhere]
- Update Feature Detection 2520
[wiredfool]
- CI: Update pypy on TravisCI 2573
[hugovk]
- ImageMorph: Fix wrong expected size of MRLs read from disk 2561
[dov]
- Docs: Update install docs for FreeBSD 2546
[wiredfool]
- Build: Ignore OpenJpeg 1.5 on FreeBSD 2544
[melvyn-sopacua]
- Remove 'not yet implemented' methods from PIL 1.1.4 2538
[hugovk]
- Dependencies: Update FreeType to 2.8, LibTIFF to 4.0.8 and libimagequant to 2.9.1 2535 2537 2540
[radarhere]
- Raise TypeError and not also UnboundLocalError in ImageFile.Parser() 2525
[joshblum]
- Test: Use Codecov for coverage 2528
[hugovk]
- Use PNG for Image.show() 2527
[HinTak, wiredfool]
- Remove WITH_DEBUG compilation flag 2522
[wiredfool]
- Fix return value on parameter parse error in _webp.c 2521
[adw1n]
- Set executable flag on scripts with shebang line 2295
[radarhere]
- Flake8 2460
[radarhere]
- Doc: Release Process Changes 2516
[wiredfool]
- CI: Added region for s3 deployment on appveyor 2515
[wiredfool]
- Doc: Updated references to point to existing files 2507
[radarhere]
- Return copy on Image crop if crop dimensions match the image 2471
[radarhere]
- Test: Optimize CI speed 2464, 2466
[hugovk]
```
### 4.1.1
```
------------------
- Undef PySlice_GetIndicesEx, see https://bugs.python.org/issue29943 2493
[cgohlke]
- Fix for file with DPI in EXIF but not metadata, and XResolution is an int rather than tuple 2484
[hugovk]
- Docs: Removed broken download counter badge 2487
[hugovk]
- Docs: Fixed rst syntax error 2477
[thebjorn]
```
### 4.1.0
```
------------------
- Close files after loading if possible 2330
[homm, wiredfool]
- Fix Image Access to be reloadable when embedding the Python interpreter 2296
[wiredfool, cgohlke]
- Fetch DPI from EXIF if not specified in JPEG header 2449, 2472
[hugovk]
- Removed winbuild checksum verification 2468
[radarhere]
- Git: Set ContainerIO test file as binary 2469
[cgohlke]
- Remove superfluous import of FixTk 2455
[cgohlke)
- Fix import of tkinter/Tkinter 2456
[cgohlke)
- Pure Python Decoders, including Python decoder to fix for MSP images 1938
[wiredfool, hugovk]
- Reorganized GifImagePlugin, fixes 2314. 2374
[radarhere, wiredfool]
- Doc: Reordered operating systems in Compatibility Matrix 2436
[radarhere]
- Test: Additional tests for BufrStub, Eps, Container, GribStub, IPTC, Wmf, XVThumb, ImageDraw, ImageMorph, ImageShow 2425
[radarhere]
- Health fixes 2437
[radarhere]
- Test: Correctness tests ContainerIO, XVThumbImagePlugin, BufrStubImagePlugin, GribStubImagePlugin, FitsStubImagePlugin, Hdf5StubImagePlugin, PixarImageFile, PsdImageFile 2443, 2442, 2441, 2440, 2431, 2430, 2428, 2427
[hugovk]
- Remove unused imports 1822
[radarhere]
- Replaced KeyError catch with dictionary get method 2424
[radarhere]
- Test: Removed unrunnable code in test_image_toqimage 2415
[hugovk]
- Removed use of spaces in TIFF kwargs names, deprecated in 2.7 1390
[radarhere]
- Removed deprecated ImageDraw setink, setfill, setfont methods 2220
[jdufresne]
- Send unwanted subprocess output to /dev/null 2253
[jdufresne]
- Fix division by zero when creating 0x0 image from numpy array 2419
[hugovk]
- Test: Added matrix convert tests 2381
[hugovk]
- Replaced broken URL to partners.adobe.com 2413
[radarhere]
- Removed unused private functions in setup.py and build_dep.py 2414
[radarhere]
- Test: Fixed Qt tests for QT5 and saving 1 bit PNG 2394
[wiredfool]
- Test: docker builds for Arch and Debian Stretch 2394
[wiredfool]
- Updated libwebp to 0.6.0 on appveyor 2395
[radarhere]
- More explicit error message when saving to a file with invalid extension 2399
[ces42]
- Docs: Update some http urls to https 2403
[hugovk]
- Preserve aux/alpha channels when performing Imagecms transforms 2355
[gunjambi]
- Test linear and radial gradient effects 2382
[hugovk]
- Test ImageDraw.Outline and and ImageDraw.Shape 2389
[hugovk]
- Added PySide to ImageQt documentation 2392
[radarhere]
- BUG: Empty image mode no longer causes a crash 2380
[evalapply]
- Exclude .travis and contents from manifest 2386
[radarhere]
- Remove 'MIT-like' from license 2145
[wiredfool]
- Tests: Add tests for several Image operations 2379
[radarhere]
- PNG: Moved iCCP chunk before PLTE chunk when saving as PNG, restricted chunks known value/ordering 2347
[radarhere]
- Default to inch-interpretation for missing ResolutionUnit in TiffImagePlugin 2365
[lambdafu]
- Bug: Fixed segfault when using ImagingTk on pypy Issue 2376, 2359.
[wiredfool]
- Bug: Fixed Integer overflow using ImagingTk on 32 bit platforms 2359
[wiredfool, QuLogic]
- Tests: Added docker images for testing alternate platforms. See also https://github.com/python-pillow/docker-images. 2368
[wiredfool]
- Removed PIL 1.0 era TK readme that concerns Windows 95/NT 2360
[wiredfool]
- Prevent `nose -v` printing docstrings 2369
[hugovk]
- Replaced absolute PIL imports with relative imports 2349
[radarhere]
- Added context managers for file handling 2307
[radarhere]
- Expose registered file extensions in Image 2343
[iggomez, radarhere]
- Make mode descriptor cache initialization thread-safe. 2351
[gunjambi]
- Updated Windows test dependencies: Freetype 2.7.1, zlib 1.2.11 2331, 2332, 2357
[radarhere]
- Followed upstream pngquant packaging reorg to libimagquant 2354
[radarhere]
- Fix invalid string escapes 2352
[hugovk]
- Add test for crop operation with no argument 2333
[radarhere]
```
### 4.0.0
```
------------------
- Refactor out postprocessing hack to load_end in PcdImageFile
[wiredfool]
- Add center and translate option to Image.rotate. 2328
[lambdafu]
- Test: Relax WMF test condition, fixes 2323
[wiredfool]
- Allow 0 size images, Fixes 2259, Reverts to pre-3.4 behavior.
[wiredfool]
- SGI: Save uncompressed SGI/BW/RGB/RGBA files 2325
[jbltx]
- Depends: Updated pngquant to 2.8.2 2319
[radarhere]
- Test: Added correctness tests for opening SGI images 2324
[wiredfool]
- Allow passing a list or tuple of individual frame durations when saving a GIF 2298
[Xdynix]
- Unified different GIF optimize conditions 2196
[radarhere]
- Build: Refactor dependency installation 2305
[hugovk]
- Test: Add python 3.6 to travis, tox 2304
[hugovk]
- Test: Fix coveralls coverage for Python+C 2300
[hugovk]
- Remove executable bit and shebang from OleFileIO.py 2308
[jwilk, radarhere]
- PyPy: Buffer interface workaround 2294
[wiredfool]
- Test: Switch to Ubuntu Trusty 14.04 on Travis CI 2294
- Remove vendored version of olefile Python package in favor of upstream 2199
[jdufresne]
- Updated comments to use print as a function 2234
[radarhere]
- Set executable flag on selftest.py, setup.py and added shebang line 2282, 2277
[radarhere, homm]
- Test: Increase epsilon for FreeType 2.7 as rendering is slightly different. 2286
[hugovk]
- Test: Faster assert_image_similar 2279
[homm]
- Removed depreciated internal "stretch" method 2276
[homm]
- Removed the handles_eof flag in decode.c 2223
[wiredfool]
- Tiff: Fix for writing Tiff to BytesIO using libtiff 2263
[wiredfool]
- Doc: Design docs 2269
[wiredfool]
- Test: Move tests requiring libtiff to test_file_libtiff 2273
[wiredfool]
- Update Maxblock heuristic 2275
[wiredfool]
- Fix for 2-bit palette corruption 2274
[pdknsk, wiredfool]
- Tiff: Update info.icc_profile when using libtiff reader. 2193
[lambdafu]
- Test: Fix bug in test_ifd_rational_save when libtiff is not available 2270
[ChristopherHogan]
- ICO: Only save relevant sizes 2267
[hugovk]
- ICO: Allow saving .ico files of 256x256 instead of 255x255 2265
[hugovk]
- Fix TIFFImagePlugin ICC color profile saving. 2087
[cskau]
- Doc: Improved description of ImageOps.deform resample parameter 2256
[radarhere]
- EMF: support negative bounding box coordinates 2249
[glexey]
- Close file if opened in WalImageFile 2216
[radarhere]
- Use Image._new() instead of _makeself() 2248
[homm]
- SunImagePlugin fixes 2241
[wiredfool]
- Use minimal scale for jpeg drafts 2240
[homm]
- Updated dependency scripts to use FreeType 2.7, OpenJpeg 2.1.2, WebP 0.5.2 and Tcl/Tk 8.6.6 2235, 2236, 2237, 2290, 2302
[radarhere]
- Fix "invalid escape sequence" bytestring warnings in Python 3.6 2186
[timgraham]
- Removed support for Python 2.6 and Python 3.2 2192
[jdufresne]
- Setup: Raise custom exceptions when required/requested dependencies are not found 2213
[wiredfool]
- Use a context manager in FontFile.save() to ensure file is always closed 2226
[jdufresne]
- Fixed bug in saving to fp-objects in Python >= 3.4 2227
[radarhere]
- Use a context manager in ImageFont._load_pilfont() to ensure file is always closed 2232
[jdufresne]
- Use generator expressions instead of list comprehension 2225
[jdufresne]
- Close file after reading in ImagePalette.load() 2215
[jdufresne]
- Changed behaviour of default box argument for paste method to match docs 2211
[radarhere]
- Add support for another BMP bitfield 2221
[jmerdich]
- Added missing top-level test __main__ 2222
[radarhere]
- Replaced range(len()) 2197
[radarhere]
- Fix for ImageQt Segfault, fixes 1370 2182
[wiredfool]
- Setup: Close file in setup.py after finished reading 2208
[jdufresne]
- Setup: optionally use pkg-config (when present) to detect dependencies 2074
[garbas]
- Search for tkinter first in builtins 2210
[matthew-brett]
- Tests: Replace try/except/fail pattern with TestCase.assertRaises() 2200
[jdufresne]
- Tests: Remove unused, open files at top level of tests 2188
[jdufresne]
- Replace type() equality checks with isinstance 2184
[jdufresne]
- Doc: Move ICO out of the list of read-only file formats 2180
[alexwlchan]
- Doc: Fix formatting, too-short title underlines and malformed table 2175
[hugovk]
- Fix BytesWarnings 2172
[jdufresne]
- Use Integer division to eliminate deprecation warning. 2168
[mastermatt]
- Doc: Update compatibility matrix
[daavve, wiredfool]
```
### 3.4.2
```
------------------
- Fix Resample coefficient calculation 2162
[homm]
```
### 3.4.1
```
------------------
- Allow lists as arguments for Image.new() 2149
[homm]
- Fix fix for map.c overflow 2151 (also in 3.3.3)
[wiredfool]
```
### 3.4.0
```
------------------
- Removed Image.core.open_ppm, added negative image size checks in Image.py. 2146
[wiredfool]
- Windows build: fetch dependencies from pillow-depends 2095
[hugovk]
- Add TIFF save_all writer. 2140
[lambdafu, vashek]
- Move libtiff fd duplication to _load_libtiff 2141
[sekrause]
- Speed up GIF save optimization step, fixes 2093. 2133
[wiredfool]
- Fix for ImageCms Segfault, Issue 2037. 2131
[wiredfool]
- Make Image.crop an immediate operation, not lazy. 2138
[wiredfool]
- Skip empty values in ImageFileDirectory 2024
[homm]
- Force reloading palette when using mmap in ImageFile. 2139
[lambdafu]
- Fix "invalid escape sequence" warning in Python 3.6 2136
[timgraham]
- Update documentation about drafts 2137
[radarhere]
- Converted documentation parameter format, comments to docstrings 2021
[radarhere]
- Fixed typos 2128 2142
[radarhere]
- Renamed references to OS X to macOS 2125 2130
[radarhere]
- Use truth value when checking for progressive and optimize option on save 2115, 2129
[radarhere]
- Convert DPI to ints when saving as JPEG 2102
[radarhere]
- Added append_images parameter to GIF saving 2103
[radarhere]
- Speedup paste with masks up to 80% 2015
[homm]
- Rewrite DDS decoders in C, add DXT3 and BC7 decoders 2068
[Mischanix]
- Fix PyArg_ParseTuple format in getink() 2070
[arjennienhuis]
- Fix saving originally missing TIFF tags. 2111
[anntzer]
- Allow pathlib.Path in Image.open on Python 2.7 2110
[patricksnape]
- Use modern base64 interface over deprecated 2121
[hugovk]
- ImageColor.getrgb hexadecimal RGBA 2114
[homm]
- Test fix for bigendian machines 2092
[wiredfool]
- Resampling lookups, trailing empty coefficients, precision 2008
[homm]
- Add (un)packing between RGBA and BGRa 2057
[arjennienhuis]
- Added return for J2k (and fpx) Load to return a pixel access object 2061
[wiredfool]
- Skip failing numpy tests on Pypy <= 5.3.1 2090
[arjennienhuis]
- Show warning when trying to save RGBA image as JPEG 2010
[homm]
- Respect pixel centers during transform 2022
[homm]
- TOC for supported file formats 2056
[polarize]
- Fix conversion of bit images to numpy arrays Fixes 350, 2058
[matthew-brett]
- Add ImageOps.scale to expand or contract a PIL image by a factor 2011
[vlmath]
- Flake8 fixes 2050
[hugovk]
- Updated freetype to 2.6.5 on Appveyor builds 2035
[radarhere]
- PCX encoder fixes 2023, pr 2041
[homm]
- Docs: Windows console prompts are > 2031
[techtonik]
- Expose Pillow package version as PIL.__version__ 2027
[techtonik]
- Add Box and Hamming filters for resampling 1959
[homm]
- Retain a reference to core image object in PyAccess 2009
[homm]
```
### 3.3.3
```
------------------
- Fix fix for map.c overflow 2151
[wiredfool]
```
### 3.3.2
```
------------------
- Fix negative image sizes in Storage.c 2105
[wiredfool]
- Fix integer overflow in map.c 2105
[wiredfool]
```
### 3.3.1
```
------------------
- Fix C90 compilation error for Tcl / Tk rewrite 2033
[matthew-brett]
- Fix image loading when rotating by 0 deg 2052
[homm]
```
### 3.3.0
```
------------------
- Fixed enums for Resolution Unit and Predictor in TiffTags.py 1998
[wiredfool]
- Fix issue converting P mode to LA 1986
[didrix]
- Moved test_j2k_overflow to check_j2k_overflow, prevent DOS of our 32bit testing machines 1995
[wiredfool]
- Skip CRC checks in PNG files when LOAD_TRUNCATED_IMAGES is enabled 1991
[kkopachev]
- Added CMYK mode for opening EPS files 1826
[radarhere]
- Docs: OSX build instruction clarification 1994
[wiredfool]
- Docs: Filter comparison table 1993
[homm]
- Removal of pthread based Incremental.c, new interface for file decoders/encoders to access the python file. Fixes assorted J2k Hangs. 1934
[wiredfool]
- Skip unnecessary passes when resizing 1954
[homm]
- Removed duplicate code in ImagePalette 1832
[radarhere]
- test_imagecms: Reduce precision of extended info due to 32 bit machine precision 1990
[AbdealiJK]
- Binary Tiff Metadata/ICC profile. 1988
[wiredfool]
- Ignore large text blocks in PNG if LOAD_TRUNCATED_IMAGES is enabled 1970
[homm]
- Replace index = index+1 in docs with +=1
[cclauss]
- Skip extra 0xff00 in jpeg 1977
[kkopachev]
- Use bytearray for palette mutable storage 1985
[radarhere, wiredfool]
- Added additional uint modes for Image.fromarray, more extensive tests of fromarray 1984
[mairsbw, wiredfool]
- Fix for program importing PyQt4 when PyQt5 also installed 1942
[hugovk]
- Changed depends/install_*.sh urls to point to github pillow-depends repo 1983
[wiredfool]
- Allow ICC profile from `encoderinfo` while saving PNGs 1909
[homm]
- Fix integer overflow on ILP32 systems (32-bit Linux). 1975
[lambdafu]
- Change function declaration to match Tcl_CmdProc type 1966
[homm]
- Integer overflow checks on all calls to *alloc 1781
[wiredfool]
- Change equals method on Image so it short circuits 1967
[mattBoros]
- Runtime loading of TCL/TK libraries, eliminating build time dependency. 1932
[matthew-brett]
- Cleanup of transform methods 1941
[homm]
- Fix "Fatal Python error: UNREF invalid object" in debug builds 1936
[wiredfool]
- Setup fixes for Alpine linux 1937
[wiredfool]
- Split resample into horizontal + vertical passes 1933
[homm]
- Box blur with premultiplied alpha 1914
[homm]
- Add libimagequant support in quantize() 1889
[rr-]
- Added internal Premultiplied luminosity (La) mode 1912
[homm]
- Fixed point integer resample 1881
[homm]
- Removed docs/BUILDME script 1924
[radarhere]
- Moved comments to docstrings 1926
[hugovk]
- Include Python.h before wchar.h so _GNU_SOURCE is set consistently 1906
[hugovk]
- Updated example decoder in documentation 1899
[radarhere]
- Added support for GIF comment extension 1896
[radarhere]
- Removed support for pre- 1.5.2 list form of Image info in Image.new 1897
[radarhere]
- Fix typos in TIFF tags 1918
[radarhere]
- Skip tests that require libtiff if it is not installed 1893 (fixes 1866)
[wiredfool]
- Skip test when icc profile is not available, fixes 1887
[doko42]
- Make deprecated functions raise NotImplementedError instead of Exception. 1862, 1890
[daniel-leicht, radarhere]
- Replaced os.system with subprocess.call in setup.py 1879
[radarhere]
- Corrected Image show documentation 1886
[radarhere]
- Added check for executable permissions to ImageShow 1880
[radarhere]
- Fixed tutorial code and added explanation 1877
[radarhere]
- Added OS X support for ImageGrab grabclipboard 1837
[radarhere]
- Combined duplicate code in ImageTk 1856
[radarhere]
- Added --disable-platform-guessing option to setup.py build extension 1861
[angeloc]
- Fixed loading Transparent PNGs with a transparent black color 1840
[olt]
- Add support for LA mode in Image.fromarray 1865
[pierriko]
- Make ImageFile load images in read-only mode 1864
[hdante]
- Added _accept hook for XVThumbImagePlugin 1853
[radarhere]
- Test TIFF with LZW compression 1855, TGA RLE file 1854
[hugovk]
- Improved SpiderImagePlugin help text 1863
[radarhere]
- Updated Sphinx project description 1870
[radarhere]
- Remove support for Python 3.0 from _imaging.c 1851
[radarhere]
- Jpeg qtables are unsigned chars 1814, 1921
[thebostik]
- Added additional EXIF tags 1841, TIFF Tags 1821
[radarhere]
- Changed documentation to refer to ImageSequence Iterator 1833
[radarhere]
- Fix Fedora prerequisites in installation docs, depends script 1842
[living180]
- Added _accept hook for PixarImagePlugin 1843
[radarhere]
- Removed outdated scanner classifier 1823
[radarhere]
- Combined identical error messages in _imaging 1825
[radarhere]
- Added debug option for setup.py to trace header and library finding 1790
[wiredfool]
- Fix doc building on travis 1820, 1844
[wiredfool]
- Fix for DIB/BMP images 1813, 1847
[wiredfool]
- Add PixarImagePlugin file extension 1809
[radarhere]
- Catch struct.errors when verifying png files 1805
[wiredfool]
- SpiderImagePlugin: raise an error when seeking in a non-stack file 1794
[radarhere, jmichalon]
- Added support for 2/4 bpp Tiff grayscale images 1789
[zwhfly]
- Removed unused variable from selftest 1788
[radarhere]
- Added warning for as_dict method (deprecated in 3.0.0) 1799
[radarhere]
- Removed powf support for older Python versions 1784
[radarhere]
- Health fixes 1625 1903
[radarhere]
```
### 3.2.0
```
------------------
- Added install docs for Fedora 23 and FreeBSD 1729, 1739, 1792
[koobs, zandermartin, wiredfool]
- Fixed TIFF multiframe load when the frames have different compression types 1782
[radarhere, geka000]
- Added __copy__ method to Image 1772
[radarhere]
- Updated dates in PIL license in OleFileIO README 1787
[radarhere]
- Corrected Tiff tag names 1786
[radarhere]
- Fixed documented name of JPEG property 1783
[radarhere]
- Fixed UnboundLocalError when loading a corrupt jpeg2k file 1780
[wiredfool]
- Fixed integer overflow in path.c 1773
[wiredfool, nedwill]
- Added debug to command line help text for pilprint 1766
[radarhere]
- Expose many more fields in ICC Profiles 1756
[lambdafu]
- Documentation changes, URL update, transpose, release checklist
[radarhere]
- Fixed saving to nonexistant files specified by pathlib.Path objects 1748 (fixes 1747)
[radarhere]
- Round Image.crop arguments to the nearest integer 1745 (fixes 1744)
[hugovk]
- Fix uninitialized variable warning in _imaging.c:getink 1663 (fixes 486)
[wiredfool]
- Disable multiprocessing install on cygwin 1700 (fixes 1690)
[wiredfool]
- Fix the error reported when libz is not found 1764
[wiredfool]
- More general error check to avoid Symbol not found: _PyUnicodeUCS2_AsLatin1String on OS X 1761
[wiredfool]
- Added py35 to tox envlist 1724
[radarhere]
- Fix EXIF tag name typos 1736
[zarlant, radarhere]
- Updated freetype to 2.6.3, Tk/Tcl to 8.6.5 and 8.5.19 1725, 1752
[radarhere]
- Add a loader for the FTEX format from Independence War 2: Edge of Chaos 1688
[jleclanche]
- Improved alpha_composite documentation 1698
[radarhere]
- Extend ImageDraw.text method to pass on multiline_text method specific arguments 1647
[radarhere]
- Allow ImageSequence to seek to zero 1686
[radarhere]
- ImageSequence Iterator is now an iterator 1649
[radarhere]
- Updated windows test builds to jpeg9b 1673
[radarhere]
- Fixed support for .gbr version 1 images, added support for version 2 in GbrImagePlugin 1653
[wiredfool]
- Clarified which YCbCr format is used 1677
[radarhere]
- Added TiffTags documentation, Moved windows build documentation to winbuild/ 1667
[wiredfool]
- Add tests for OLE file based formats 1678
[radarhere]
- Add TIFF IFD test 1671
[radarhere]
- Add a basic DDS image plugin with more tests 1654
[jleclanche, hugovk, wiredfool]
- Fix incorrect conditional in encode.c 1638
[manisandro]
```
### 3.1.2
```
------------------
- Fixed an integer overflow in Jpeg2KEncode.c causing a buffer overflow. CVE-2016-3076
[wiredfool]
```
### 3.1.1
```
------------------
- Fixed an integer overflow in Resample.c causing writes in the Python heap.
[nedwill]
- Fixed a buffer overflow in PcdDecode.c causing a segfault when opening PhotoCD files. CVE-2016-2533
[wiredfool]
- Fixed a buffer overflow in FliDecode.c causing a segfault when opening FLI files. CVE-2016-0775
[wiredfool]
- Fixed a buffer overflow in TiffDecode.c causing an arbitrary amount of memory to be overwritten when opening a specially crafted invalid TIFF file. CVE-2016-0740
[wiredfool]
```
### 3.1.0
```
------------------
- Fixing test failures on Python 2.6/Windows 1633
[wiredfool]
- Limit metadata tags when writing using libtiff 1620
[wiredfool]
- Rolling back exif support to pre-3.0 format 1627
[wiredfool]
- Fix Divide by zero in Exif, add IFDRational class 1531
[wiredfool]
- Catch the IFD error near the source 1622
[wiredfool]
- Added release notes for 3.1.0 1623
[radarhere]
- Updated spacing to be consistent between multiline methods 1624
[radarhere]
- Let EditorConfig take care of some basic formatting 1489
[hugovk]
- Restore gpsexif data to the v1 form 1619
[wiredfool]
- Add /usr/local include and library directories for freebsd 1613
[leforestier]
- Updated installation docs for new versions of dependencies 1611
[radarhere]
- Removed unrunnable test file 1610
[radarhere]
- Changed register calls to use format property 1608
[radarhere]
- Added field type constants to TiffTags 1596
[radarhere]
- Allow saving RowsPerStrip with libtiff 1594
[wiredfool]
- Enabled conversion to numpy array for HSV images 1578
[cartisan]
- Changed some urls in the docs to use https 1580
[hugovk]
- Removed logger.exception from ImageFile.py 1590
[radarhere]
- Removed warnings module check 1587
[radarhere]
- Changed arcs, chords and pie slices to use floats 1577
[radarhere]
- Update unit test asserts 1584, 1598
[radarhere]
- Fix command to invoke ghostscript for eps files 1478
[baumatron, radarhere]
- Consistent multiline text spacing 1574
[wiredfool, hugovk]
- Removed unused lines in BDFFontFile 1530
[radarhere]
- Changed ImageQt import of Image 1560
[radarhere, ericfrederich]
- Throw TypeError if no cursors were found in .cur file 1556
[radarhere]
- Fix crash in ImageTk.PhotoImage on win-amd64 1553
[cgohlke]
- ExtraSamples tag should be a SHORT, not a BYTE 1555
[Nexuapex]
- Docs and code health fixes 1565 1566 1581 1586 1591 1621
[radarhere]
- Updated freetype to 2.6.2 1564
[radarhere]
- Updated WebP to 0.5.0 for Travis 1515 1609
[radarhere]
- Fix missing 'version' key value in __array_interface__ 1519
[mattip]
- Replaced os.popen with subprocess.Popen to pilprint script 1523
[radarhere]
- Catch OverflowError in SpiderImagePlugin 1545
[radarhere, MrShark]
- Fix the definition of icc_profile in TiffTags 1539
[wiredfool]
- Remove old _imagingtiff.c and pilplus stuff 1499
[hugovk]
- Fix Exception when requiring jpeg 1501
[hansmosh]
- Dependency scripts for Debian and Ubuntu 1486
[wiredfool]
- Added Usage message to painter script 1482
[radarhere]
- Add tag info for iccprofile, fixes 1462. 1465
[wiredfool]
- Added some requirements for make release-test 1451
[wiredfool]
- Flatten tiff metadata value SAMPLEFORMAT to initial value 1467 (fixes 1466)
[wiredfool]
- Fix handling of pathlib in Image.save 1464 (fixes 1460)
[wiredfool]
- Make tests more robust 1469
[hugovk]
- Use correctly sized pointers for windows handle types 1458
[nu744]
```
### 3.0.0
```
------------------
- Check flush method existence for file-like object 1398
[mrTable, radarhere]
- Added PDF multipage saving 1445
[radarhere]
- Removed deprecated code, Image.tostring, Image.fromstring, Image.offset, ImageDraw.setink, ImageDraw.setfill, ImageFileIO, ImageFont.FreeTypeFont and ImageFont.truetype `file` kwarg, ImagePalette private _make functions, ImageWin.fromstring and ImageWin.tostring 1343
[radarhere]
- Load more broken images 1428
[homm]
- Require zlib and libjpeg 1439
[wiredfool]
- Preserve alpha when converting from a QImage to a Pillow Image by using png instead of ppm 1429
[ericfrederich]
- Qt needs 32 bit aligned image data 1430
[ericfrederich]
- Tiff ImageFileDirectory rewrite 1419
[anntzer, wiredfool, homm]
- Removed spammy debug logging 1423
[wiredfool]
- Save as GiF89a with support for animation parameters 1384
[radarhere]
- Correct convert matrix docs 1426
[wiredfool]
- Catch TypeError in _getexif 1414
[radarhere, wiredfool]
- Fix for UnicodeDecodeError in TiffImagePlugin 1416
[bogdan199, wiredfool]
- Dedup code in image.open 1415
[wiredfool]
- Skip any number extraneous chars at the end of JPEG chunks 1337
[homm]
- Single threaded build for pypy3, refactor 1413
[wiredfool]
- Fix loading of truncated images with LOAD_TRUNCATED_IMAGES enabled 1366
[homm]
- Documentation update for concepts: bands 1406
[merriam]
- Add Solaris/SmartOS include and library directories 1356
[njones11]
- Improved handling of getink color 1387
[radarhere]
- Disable compiler optimizations for topalette and tobilevel functions for all msvc versions 1402 (fixes 1357)
[cgohlke]
- Skip ImageFont_bitmap test if _imagingft C module is not installed 1409
[homm]
- Add param documentation to ImagePalette 1381
[bwrsandman]
- Corrected scripts path 1407
[radarhere]
- Updated libtiff to 4.0.6 1405, 1421
[radarhere]
- Updated Platform Support for Yosemite 1403
[radarhere]
- Fixed infinite loop on truncated file 1401
[radarhere]
- Check that images are L mode in ImageMorph methods 1400
[radarhere]
- In tutorial of pasting images, add to mask text 1389
[merriam]
- Style/health fixes 1391, 1397, 1417, 1418
[radarhere]
- Test on Python 3.5 dev and 3.6 nightly 1361
[hugovk]
- Fix fast rotate operations 1373
[radarhere]
- Added support for pathlib Path objects to open and save 1372
[radarhere]
- Changed register calls to use format property 1333
[radarhere]
- Added support for ImageGrab.grab to OS X 1367, 1443
[radarhere, hugovk]
- Fixed PSDraw stdout Python 3 compatibility 1365
[radarhere]
- Added Python 3.3 to AppVeyor 1363
[radarhere]
- Treat MPO with unknown header as base JPEG file 1350
[hugovk, radarhere]
- Added various tests 1330, 1344
[radarhere]
- More ImageFont tests 1327
[hugovk]
- Use logging instead of print 1207
[anntzer]
```
### 2.9.0
```
------------------
- Added test for GimpPaletteFile 1324
[radarhere]
- Merged gifmaker script to allow saving of multi-frame GIF images 1320
[radarhere]
- Added is_animated property to multi-frame formats 1319
[radarhere]
- Fixed ValueError in Python 2.6 1315 1316
[cgohlke, radarhere]
- Fixed tox test script path 1308
[radarhere]
- Added width and height properties 1304
[radarhere]
- Update tiff and tk tcl 8.5 versions 1303
[radarhere, wiredfool]
- Add functions to convert: Image <-> QImage; Image <-> QPixmap 1217
[radarhere, rominf]
- Remove duplicate code in gifmaker script 1294
[radarhere]
- Multiline text in ImageDraw 1177
[allo-, radarhere]
- Automated Windows CI/build support 1278
[wiredfool]
- Removed support for Tk versions earlier than 8.4 1288
[radarhere]
- Fixed polygon edge drawing 1255 (fixes 1252)
[radarhere]
- Check prefix length in _accept methods 1267
[radarhere]
- Register MIME type for BMP 1277
[coldmind]
- Adjusted ImageQt use of unicode() for 2/3 compatibility 1218
[radarhere]
- Identify XBM file created with filename including underscore 1230 (fixes 1229)
[hugovk]
- Copy image when saving in GifImagePlugin 1231 (fixes 718)
[radarhere]
- Removed support for FreeType 2.0 1247
[radarhere]
- Added background saving to GifImagePlugin 1273
[radarhere]
- Provide n_frames attribute to multi-frame formats 1261
[anntzer, radarhere]
- Add duration and loop set to GifImagePlugin 1172, 1269
[radarhere]
- Ico files are little endian 1232
[wiredfool]
- Upgrade olefile from 0.30 to 0.42b 1226
[radarhere, decalage2]
- Setting transparency value to 0 when the tRNS contains only null byte(s) 1239
[juztin]
- Separated out feature checking from selftest 1233
[radarhere]
- Style/health fixes
[radarhere]
- Update WebP from 0.4.1 to 0.4.3 1235
[radarhere]
- Release GIL during image load (decode) 1224
[lkesteloot]
- Added icns save 1185
[radarhere]
- Fix putdata memory leak 1196
[benoit-pierre]
- Keep user-specified ordering of icon sizes 1193
[karimbahgat]
- Tiff: allow writing floating point tag values 1113
[bpedersen2]
```
### 2.8.2
```
------------------
- Bug fix: Fixed Tiff handling of bad EXIF data
[radarhere]
```
Links
- PyPI: https://pypi.org/project/pillow
- Changelog: https://pyup.io/changelogs/pillow/
- Homepage: https://python-pillow.org
This PR updates Pillow from 2.8.1 to 5.1.0.
Changelog
### 5.1.0 ``` ------------------ - Close fp before return in ImagingSavePPM 3061 [kathryndavies] - Added documentation for ICNS append_images 3051 [radarhere] - Docs: Move intro text below its header 3021 [hugovk] - CI: Rename appveyor.yml as .appveyor.yml 2978 [hugovk] - Fix TypeError for JPEG2000 parser feed 3042 [hugovk] - Certain corrupted jpegs can result in no data read 3023 [kkopachev] - Add support for BLP file format 3007 [jleclanche] - Simplify version checks 2998 [hugovk] - Fix "invalid escape sequence" warning on Python 3.6+ 2996 [timgraham] - Allow append_images to set .icns scaled images 3005 [radarhere] - Support appending to existing PDFs 2965 [vashek] - Fix and improve efficient saving of ICNS on macOS 3004 [radarhere] - Build: Enable pip cache in AppVeyor build 3009 [thijstriemstra] - Trim trailing whitespace 2985 [Metallicow] - Docs: Correct reference to Image.new method 3000 [radarhere] - Rearrange ImageFilter classes into alphabetical order 2990 [radarhere] - Test: Remove duplicate line 2983 [radarhere] - Build: Update AppVeyor PyPy version 3003 [radarhere] - Tiff: Open 8 bit Tiffs with 5 or 6 channels, discarding extra channels 2938 [homm] - Readme: Added Twitter badge 2930 [hugovk] - Removed __main__ code from ImageCms 2942 [radarhere] - Test: Changed assert statements to unittest calls 2961 [radarhere] - Depends: Update libimagequant to 2.11.10, raqm to 0.5.0, freetype to 2.9 3036, 3017, 2957 [radarhere] - Remove _imaging.crc32 in favor of builtin Python crc32 implementation 2935 [wiredfool] - Move Tk directory to src directory 2928 [hugovk] - Enable pip cache in Travis CI 2933 [jdufresne] - Remove unused and duplicate imports 2927 [radarhere] - Docs: Changed documentation references to 2.x to 2.7 2921 [radarhere] - Fix memory leak when opening webp files 2974 [wiredfool] - Setup: Fix "TypeError: 'NoneType' object is not iterable" for PPC and CRUX 2951 [hugovk] - Setup: Add libdirs for ppc64le and armv7l 2968 [nehaljwani] ``` ### 5.0.0 ``` ------------------ - Docs: Added docstrings from documentation 2914 [radarhere] - Test: Switch from nose to pytest 2815 [hugovk] - Rework Source directory layout, preventing accidental import of PIL. 2911 [wiredfool] - Dynamically link libraqm 2753 [wiredfool] - Removed scripts directory 2901 [wiredfool] - TIFF: Run all compressed tiffs through libtiff decoder 2899 [wiredfool] - GIF: Add disposal option when saving GIFs 2902 [linnil1, wiredfool] - EPS: Allow for an empty line in EPS header data 2903 [radarhere] - PNG: Add support for sRGB and cHRM chunks, permit sRGB when no iCCP chunk present 2898 [wiredfool] - Dependencies: Update Tk Tcl to 8.6.8 2905 [radarhere] - Decompression bomb error now raised for images 2x larger than a decompression bomb warning 2583 [wiredfool] - Test: avoid random failure in test_effect_noise 2894 [hugovk] - Increased epsilon for test_file_eps.py:test_showpage due to Arch update. 2896 [wiredfool] - Removed check parameter from _save in BmpImagePlugin, PngImagePlugin, ImImagePlugin, PalmImagePlugin, and PcxImagePlugin. 2873 [radarhere] - Make PngImagePlugin.add_text() zip argument type bool 2890 [jdufresne] - Depends: Updated libwebp to 0.6.1 2880 [radarhere] - Remove unnecessary bool() calls in Image.registered_extensions and skipKnownBadTests 2891 [jdufresne] - Fix count of BITSPERSAMPLE items in broken TIFF files 2883 [homm] - Fillcolor parameter for Image.Transform 2852 [wiredfool] - Test: Display differences for test failures 2862 [wiredfool] - Added executable flag to file with shebang line 2884 [radarhere] - Setup: Specify compatible Python versions for pip 2877 [hugovk] - Dependencies: Updated libimagequant to 2.11.4 2878 [radarhere] - Setup: Warn if trying to install for Py3.7 on Windows 2855 [hugovk] - Doc: Fonts can be loaded from a file-like object, not just filename 2861 [robin-norwood] - Add eog support for Ubuntu Image Viewer 2864 [NafisFaysal] - Test: Test on 3.7-dev on Travis.ci 2870 [hugovk] - Dependencies: Update libtiff to 4.0.9 2871 [radarhere] - Setup: Replace deprecated platform.dist with file existence check 2869 [wiredfool] - Build: Fix setup.py on Debian 2853 [wiredfool] - Docs: Correct error in ImageDraw documentation 2858 [meribold] - Test: Drop Ubuntu Precise, Fedora 24, Fedora 25, add Fedora 27, Centos 7, Amazon v2 CI Support 2854, 2843, 2895, 2897 [wiredfool] - Dependencies: Updated libimagequant to 2.11.3 2849 [radarhere] - Test: Fix test_image.py to use tempfile 2841 [radarhere] - Replace PIL.OleFileIO deprecation warning with descriptive ImportError 2833 [hugovk] - WebP: Add support for animated WebP files 2761 [jd20] - PDF: Set encoderinfo for images when saving multi-page PDF. Fixes 2804. 2805 [ixio] - Allow the olefile dependency to be optional 2789 [jdufresne] - GIF: Permit LZW code lengths up to 12 bits in GIF decode 2813 [wiredfool] - Fix unterminated string and unchecked exception in _font_text_asBytes. 2825 [wiredfool] - PPM: Use fixed list of whitespace, rather relying on locale, fixes 272. 2831 [markmiscavage] - Added support for generators when using append_images 2829, 2835 [radarhere] - Doc: Correct PixelAccess.rst 2824 [hasahmed] - Depends: Update raqm to 0.3.0 2822 [radarhere] - Docs: Link to maintained version of aggdraw 2809 [hugovk] - Include license file in the generated wheel packages 2801 [jdufresne] - Depends: Update openjpeg to 2.3.0 2791 [radarhere] - Add option to Makefile to build and install with C coverage 2781 [hugovk] - Add context manager support to ImageFile.Parser and PngImagePlugin.ChunkStream 2793 [radarhere] - ImageDraw.textsize: fix zero length error 2788 [wiredfool, hugovk] ``` ### 4.3.0 ``` ------------------ - Fix warning on pointer cast in isblock 2775, 2778 [cgohlke] - Doc: Added macOS High Sierra tested Pillow version 2777 [radarhere] - Use correct Windows handle type on 64 bit in imagingcms 2774 [cgohlke] - 64 Bit Windows fix for block storage 2773 [cgohlke] - Fix "expression result unused" warning 2764 [radarhere] - Add 16bit Read/Write and RLE read support to SgiImageFile 2769 [jbltx, wiredfool] - Block & array hybrid storage 2738 [homm] - Common seek frame position check 1849 [radarhere] - Doc: Add note about aspect ratio to Image thumbnail script 2281 [wilsonge] - Fix ValueError: invalid version number '1.0.0rc1' in scipy release candidate 2771 [cgohlke] - Unfreeze requirements.txt 2766 [hugovk] - Test: ResourceWarning tests 2756 [hugovk] - Use n_frames to determine is_animated if possible 2315 [radarhere] - Doc: Corrected parameters in documentation 2768 [radarhere] - Avoid unnecessary Image operations 1891 [radarhere] - Added register_extensions method 1860 [radarhere] - Fix TIFF support for I;16S, I;16BS, and I;32BS rawmodes 2748 [wiredfool] - Fixed doc syntax in ImageDraw 2752 [radarhere] - Fixed support for building on Windows/msys2. Added Appveyor CI coverage for python3 on msys2 2476 [wiredfool] - Fix ValueError in Exif/Tiff IFD 2719 [wiredfool] - Use pathlib2 for Path objects on Python < 3.4 2291 [asergi] - Export only required properties in unsafe_ptrs 2740 [homm] - Alpha composite fixes 2709 [homm] - Faster Transpose operations, added 'Transverse' option 2730 [homm] - Deprecate ImageOps undocumented functions gaussian_blur, gblur, unsharp_mask, usm and box_blur in favor of ImageFilter implementations 2735 [homm] - Dependencies: Updated freetype to 2.8.1 2741 [radarhere] - Bug: Player skipped first image 2742 [radarhere] - Faster filter operations for Kernel, Gaussian, and Unsharp Mask filters 2679 [homm] - EPS: Add showpage to force rendering of some EPS images 2636 [kaplun] - DOC: Fix type of palette parameter in Image.quantize. 2703 [kkopachev] - DOC: Fix Ico docs to match code 2712 [hugovk] - Added file pointer save to SpiderImagePlugin 2647 [radarhere] - Add targa version 2 footer 2713 [jhultgre] - Removed redundant lines 2714 [radarhere] - Travis CI: Use default pypy/pypy3 2721 [hugovk] - Fix for SystemError when rendering an empty string, added in 4.2.0 2706 [wiredfool] - Fix for memory leaks in font handling added in 4.2.0 2634 [wiredfool] - Tests: cleanup, more tests. Fixed WMF save handler 2689 [radarhere] - Removed debugging interface for Image.core.grabclipboard 2708 [radarhere] - Doc syntax fix 2710 [radarhere] - Faster packing and unpacking for RGB, LA, and related storage modes 2693 [homm] - Use RGBX rawmode for RGB JPEG images where possible 1989 [homm] - Remove palettes from non-palette modes in _new 2702 [wiredfool] - Delete transparency info when convert'ing RGB/L to RGBA 2633 [olt] - Code tweaks to ease type annotations 2687 [neiljp] - Fixed incorrect use of 's' to byteslike object 2691 [wiredfool] - Fix JPEG subsampling labels for subsampling=2 2698 [homm] - Region of interest (box) for resampling 2254 [homm] - Basic support for Termux (android) in setup.py 2684 [wiredfool] - Bug: Fix Image.fromarray for numpy.bool type. 2683 [wiredfool] - CI: Add Fedora 24 and 26 to Docker tests [wiredfool] - JPEG: Fix ZeroDivisionError when EXIF contains invalid DPI (0/0). 2667 [vytisb] - Depends: Updated openjpeg to 2.2.0 2669 [radarhere] - Depends: Updated Tk Tcl to 8.6.7 2668 [radarhere] - Depends: Updated libimagequant to 2.10.2 2660 [radarhere] - Test: Added test for ImImagePlugin tell() 2675 [radarhere] - Test: Additional tests for SGIImagePlugin 2659 [radarhere] - New Image.getchannel method 2661 [homm] - Remove unused im.copy2 and core.copy methods 2657 [homm] - Fast Image.merge() 2677 [homm] - Fast Image.split() 2676 [homm] - Fast image allocation 2655 [homm] - Storage cleanup 2654 [homm] - FLI: Use frame count from FLI header 2674 [radarhere] - Test: Test animated FLI file 2650 [hugovk] - Bug: Fixed uninitialized memory in bc5 decoding 2648 [ifeherva] - Moved SgiImagePlugin save error to before the start of write operations 2646 [radarhere] - Move createfontdatachunk.py so isn't installed globally 2645 [hugovk] - Bug: Fix unexpected keyword argument 'align' 2641 [hugovk] - Add newlines to error message for clarity 2640 [hugovk] - Docs: Updated redirected URL 2637 [radarhere] - Bug: Fix JPEG DPI when EXIF is invalid 2632 [wiredfool] - Bug: Fix for font getsize on empty string 2624 [radarhere] - Docs: Improved ImageDraw documentation 2626 [radarhere] - Docs: Corrected alpha_composite args documentation 2627 [radarhere] - Docs: added the description of the filename attribute to images.rst 2621 [dasdachs] - Dependencies: Updated libimagequant to 2.10.1 2616 [radarhere] - PDF: Renamed parameter to not shadow built-in dict 2612 [kijeong] ``` ### 4.2.1 ``` ------------------ - CI: Fix version specification and test on CI for PyPy/Windows 2608 [wiredfool] ``` ### 4.2.0 ``` ------------------ - Doc: Clarified Image.save:append_images documentation 2604 [radarhere] - CI: Amazon Linux and Centos6 docker images added to TravisCI 2585 [wiredfool] - Image.alpha_composite added 2595 [wiredfool] - Complex Text Support 2576 [ShamsaHamed, Fahad-Alsaidi, wiredfool] - Added threshold parameter to ImageDraw.floodfill 2599 [nediamond] - Added dBATCH parameter to ghostscript command 2588 [radarhere] - JPEG: Adjust buffer size when icc_profile > MAXBLOCK 2596 [Darou] - Specify Pillow Version in one place 2517 [wiredfool] - CI: Change the owner of the TRAVIS_BUILD_DIR, fixing broken docker runs 2587 [wiredfool] - Fix truncated PNG loading for some images, Fix memory leak on truncated PNG images. 2541, 2598 [homm] - Add decompression bomb check to Image.crop 2410 [wiredfool] - ImageFile: Ensure that the `err_code` variable is initialized in case of exception. 2363 [alexkiro] - Tiff: Support append_images for saving multipage TIFFs 2406 [blochl] - Doc: Clarify that draft is only implemented for JPEG and PCD 2409 [wiredfool] - Test: MicImagePlugin 2447 [hugovk] - Use round() instead of floor() to eliminate zero coefficients in resample 2558 [homm] - Remove deprecated code 2549 [hugovk] - Added append_images to PDF saving 2526 [radarhere] - Remove unused function core image function new_array 2548 [hugovk] - Remove unnecessary calls to dict.keys() 2551 [jdufresne] - Add more ImageDraw.py tests and remove unused Draw.c code 2533 [hugovk] - Test: More tests for ImageMorph 2554 [hugovk] - Test: McIDAS area file 2552 [radarhere] - Update Feature Detection 2520 [wiredfool] - CI: Update pypy on TravisCI 2573 [hugovk] - ImageMorph: Fix wrong expected size of MRLs read from disk 2561 [dov] - Docs: Update install docs for FreeBSD 2546 [wiredfool] - Build: Ignore OpenJpeg 1.5 on FreeBSD 2544 [melvyn-sopacua] - Remove 'not yet implemented' methods from PIL 1.1.4 2538 [hugovk] - Dependencies: Update FreeType to 2.8, LibTIFF to 4.0.8 and libimagequant to 2.9.1 2535 2537 2540 [radarhere] - Raise TypeError and not also UnboundLocalError in ImageFile.Parser() 2525 [joshblum] - Test: Use Codecov for coverage 2528 [hugovk] - Use PNG for Image.show() 2527 [HinTak, wiredfool] - Remove WITH_DEBUG compilation flag 2522 [wiredfool] - Fix return value on parameter parse error in _webp.c 2521 [adw1n] - Set executable flag on scripts with shebang line 2295 [radarhere] - Flake8 2460 [radarhere] - Doc: Release Process Changes 2516 [wiredfool] - CI: Added region for s3 deployment on appveyor 2515 [wiredfool] - Doc: Updated references to point to existing files 2507 [radarhere] - Return copy on Image crop if crop dimensions match the image 2471 [radarhere] - Test: Optimize CI speed 2464, 2466 [hugovk] ``` ### 4.1.1 ``` ------------------ - Undef PySlice_GetIndicesEx, see https://bugs.python.org/issue29943 2493 [cgohlke] - Fix for file with DPI in EXIF but not metadata, and XResolution is an int rather than tuple 2484 [hugovk] - Docs: Removed broken download counter badge 2487 [hugovk] - Docs: Fixed rst syntax error 2477 [thebjorn] ``` ### 4.1.0 ``` ------------------ - Close files after loading if possible 2330 [homm, wiredfool] - Fix Image Access to be reloadable when embedding the Python interpreter 2296 [wiredfool, cgohlke] - Fetch DPI from EXIF if not specified in JPEG header 2449, 2472 [hugovk] - Removed winbuild checksum verification 2468 [radarhere] - Git: Set ContainerIO test file as binary 2469 [cgohlke] - Remove superfluous import of FixTk 2455 [cgohlke) - Fix import of tkinter/Tkinter 2456 [cgohlke) - Pure Python Decoders, including Python decoder to fix for MSP images 1938 [wiredfool, hugovk] - Reorganized GifImagePlugin, fixes 2314. 2374 [radarhere, wiredfool] - Doc: Reordered operating systems in Compatibility Matrix 2436 [radarhere] - Test: Additional tests for BufrStub, Eps, Container, GribStub, IPTC, Wmf, XVThumb, ImageDraw, ImageMorph, ImageShow 2425 [radarhere] - Health fixes 2437 [radarhere] - Test: Correctness tests ContainerIO, XVThumbImagePlugin, BufrStubImagePlugin, GribStubImagePlugin, FitsStubImagePlugin, Hdf5StubImagePlugin, PixarImageFile, PsdImageFile 2443, 2442, 2441, 2440, 2431, 2430, 2428, 2427 [hugovk] - Remove unused imports 1822 [radarhere] - Replaced KeyError catch with dictionary get method 2424 [radarhere] - Test: Removed unrunnable code in test_image_toqimage 2415 [hugovk] - Removed use of spaces in TIFF kwargs names, deprecated in 2.7 1390 [radarhere] - Removed deprecated ImageDraw setink, setfill, setfont methods 2220 [jdufresne] - Send unwanted subprocess output to /dev/null 2253 [jdufresne] - Fix division by zero when creating 0x0 image from numpy array 2419 [hugovk] - Test: Added matrix convert tests 2381 [hugovk] - Replaced broken URL to partners.adobe.com 2413 [radarhere] - Removed unused private functions in setup.py and build_dep.py 2414 [radarhere] - Test: Fixed Qt tests for QT5 and saving 1 bit PNG 2394 [wiredfool] - Test: docker builds for Arch and Debian Stretch 2394 [wiredfool] - Updated libwebp to 0.6.0 on appveyor 2395 [radarhere] - More explicit error message when saving to a file with invalid extension 2399 [ces42] - Docs: Update some http urls to https 2403 [hugovk] - Preserve aux/alpha channels when performing Imagecms transforms 2355 [gunjambi] - Test linear and radial gradient effects 2382 [hugovk] - Test ImageDraw.Outline and and ImageDraw.Shape 2389 [hugovk] - Added PySide to ImageQt documentation 2392 [radarhere] - BUG: Empty image mode no longer causes a crash 2380 [evalapply] - Exclude .travis and contents from manifest 2386 [radarhere] - Remove 'MIT-like' from license 2145 [wiredfool] - Tests: Add tests for several Image operations 2379 [radarhere] - PNG: Moved iCCP chunk before PLTE chunk when saving as PNG, restricted chunks known value/ordering 2347 [radarhere] - Default to inch-interpretation for missing ResolutionUnit in TiffImagePlugin 2365 [lambdafu] - Bug: Fixed segfault when using ImagingTk on pypy Issue 2376, 2359. [wiredfool] - Bug: Fixed Integer overflow using ImagingTk on 32 bit platforms 2359 [wiredfool, QuLogic] - Tests: Added docker images for testing alternate platforms. See also https://github.com/python-pillow/docker-images. 2368 [wiredfool] - Removed PIL 1.0 era TK readme that concerns Windows 95/NT 2360 [wiredfool] - Prevent `nose -v` printing docstrings 2369 [hugovk] - Replaced absolute PIL imports with relative imports 2349 [radarhere] - Added context managers for file handling 2307 [radarhere] - Expose registered file extensions in Image 2343 [iggomez, radarhere] - Make mode descriptor cache initialization thread-safe. 2351 [gunjambi] - Updated Windows test dependencies: Freetype 2.7.1, zlib 1.2.11 2331, 2332, 2357 [radarhere] - Followed upstream pngquant packaging reorg to libimagquant 2354 [radarhere] - Fix invalid string escapes 2352 [hugovk] - Add test for crop operation with no argument 2333 [radarhere] ``` ### 4.0.0 ``` ------------------ - Refactor out postprocessing hack to load_end in PcdImageFile [wiredfool] - Add center and translate option to Image.rotate. 2328 [lambdafu] - Test: Relax WMF test condition, fixes 2323 [wiredfool] - Allow 0 size images, Fixes 2259, Reverts to pre-3.4 behavior. [wiredfool] - SGI: Save uncompressed SGI/BW/RGB/RGBA files 2325 [jbltx] - Depends: Updated pngquant to 2.8.2 2319 [radarhere] - Test: Added correctness tests for opening SGI images 2324 [wiredfool] - Allow passing a list or tuple of individual frame durations when saving a GIF 2298 [Xdynix] - Unified different GIF optimize conditions 2196 [radarhere] - Build: Refactor dependency installation 2305 [hugovk] - Test: Add python 3.6 to travis, tox 2304 [hugovk] - Test: Fix coveralls coverage for Python+C 2300 [hugovk] - Remove executable bit and shebang from OleFileIO.py 2308 [jwilk, radarhere] - PyPy: Buffer interface workaround 2294 [wiredfool] - Test: Switch to Ubuntu Trusty 14.04 on Travis CI 2294 - Remove vendored version of olefile Python package in favor of upstream 2199 [jdufresne] - Updated comments to use print as a function 2234 [radarhere] - Set executable flag on selftest.py, setup.py and added shebang line 2282, 2277 [radarhere, homm] - Test: Increase epsilon for FreeType 2.7 as rendering is slightly different. 2286 [hugovk] - Test: Faster assert_image_similar 2279 [homm] - Removed depreciated internal "stretch" method 2276 [homm] - Removed the handles_eof flag in decode.c 2223 [wiredfool] - Tiff: Fix for writing Tiff to BytesIO using libtiff 2263 [wiredfool] - Doc: Design docs 2269 [wiredfool] - Test: Move tests requiring libtiff to test_file_libtiff 2273 [wiredfool] - Update Maxblock heuristic 2275 [wiredfool] - Fix for 2-bit palette corruption 2274 [pdknsk, wiredfool] - Tiff: Update info.icc_profile when using libtiff reader. 2193 [lambdafu] - Test: Fix bug in test_ifd_rational_save when libtiff is not available 2270 [ChristopherHogan] - ICO: Only save relevant sizes 2267 [hugovk] - ICO: Allow saving .ico files of 256x256 instead of 255x255 2265 [hugovk] - Fix TIFFImagePlugin ICC color profile saving. 2087 [cskau] - Doc: Improved description of ImageOps.deform resample parameter 2256 [radarhere] - EMF: support negative bounding box coordinates 2249 [glexey] - Close file if opened in WalImageFile 2216 [radarhere] - Use Image._new() instead of _makeself() 2248 [homm] - SunImagePlugin fixes 2241 [wiredfool] - Use minimal scale for jpeg drafts 2240 [homm] - Updated dependency scripts to use FreeType 2.7, OpenJpeg 2.1.2, WebP 0.5.2 and Tcl/Tk 8.6.6 2235, 2236, 2237, 2290, 2302 [radarhere] - Fix "invalid escape sequence" bytestring warnings in Python 3.6 2186 [timgraham] - Removed support for Python 2.6 and Python 3.2 2192 [jdufresne] - Setup: Raise custom exceptions when required/requested dependencies are not found 2213 [wiredfool] - Use a context manager in FontFile.save() to ensure file is always closed 2226 [jdufresne] - Fixed bug in saving to fp-objects in Python >= 3.4 2227 [radarhere] - Use a context manager in ImageFont._load_pilfont() to ensure file is always closed 2232 [jdufresne] - Use generator expressions instead of list comprehension 2225 [jdufresne] - Close file after reading in ImagePalette.load() 2215 [jdufresne] - Changed behaviour of default box argument for paste method to match docs 2211 [radarhere] - Add support for another BMP bitfield 2221 [jmerdich] - Added missing top-level test __main__ 2222 [radarhere] - Replaced range(len()) 2197 [radarhere] - Fix for ImageQt Segfault, fixes 1370 2182 [wiredfool] - Setup: Close file in setup.py after finished reading 2208 [jdufresne] - Setup: optionally use pkg-config (when present) to detect dependencies 2074 [garbas] - Search for tkinter first in builtins 2210 [matthew-brett] - Tests: Replace try/except/fail pattern with TestCase.assertRaises() 2200 [jdufresne] - Tests: Remove unused, open files at top level of tests 2188 [jdufresne] - Replace type() equality checks with isinstance 2184 [jdufresne] - Doc: Move ICO out of the list of read-only file formats 2180 [alexwlchan] - Doc: Fix formatting, too-short title underlines and malformed table 2175 [hugovk] - Fix BytesWarnings 2172 [jdufresne] - Use Integer division to eliminate deprecation warning. 2168 [mastermatt] - Doc: Update compatibility matrix [daavve, wiredfool] ``` ### 3.4.2 ``` ------------------ - Fix Resample coefficient calculation 2162 [homm] ``` ### 3.4.1 ``` ------------------ - Allow lists as arguments for Image.new() 2149 [homm] - Fix fix for map.c overflow 2151 (also in 3.3.3) [wiredfool] ``` ### 3.4.0 ``` ------------------ - Removed Image.core.open_ppm, added negative image size checks in Image.py. 2146 [wiredfool] - Windows build: fetch dependencies from pillow-depends 2095 [hugovk] - Add TIFF save_all writer. 2140 [lambdafu, vashek] - Move libtiff fd duplication to _load_libtiff 2141 [sekrause] - Speed up GIF save optimization step, fixes 2093. 2133 [wiredfool] - Fix for ImageCms Segfault, Issue 2037. 2131 [wiredfool] - Make Image.crop an immediate operation, not lazy. 2138 [wiredfool] - Skip empty values in ImageFileDirectory 2024 [homm] - Force reloading palette when using mmap in ImageFile. 2139 [lambdafu] - Fix "invalid escape sequence" warning in Python 3.6 2136 [timgraham] - Update documentation about drafts 2137 [radarhere] - Converted documentation parameter format, comments to docstrings 2021 [radarhere] - Fixed typos 2128 2142 [radarhere] - Renamed references to OS X to macOS 2125 2130 [radarhere] - Use truth value when checking for progressive and optimize option on save 2115, 2129 [radarhere] - Convert DPI to ints when saving as JPEG 2102 [radarhere] - Added append_images parameter to GIF saving 2103 [radarhere] - Speedup paste with masks up to 80% 2015 [homm] - Rewrite DDS decoders in C, add DXT3 and BC7 decoders 2068 [Mischanix] - Fix PyArg_ParseTuple format in getink() 2070 [arjennienhuis] - Fix saving originally missing TIFF tags. 2111 [anntzer] - Allow pathlib.Path in Image.open on Python 2.7 2110 [patricksnape] - Use modern base64 interface over deprecated 2121 [hugovk] - ImageColor.getrgb hexadecimal RGBA 2114 [homm] - Test fix for bigendian machines 2092 [wiredfool] - Resampling lookups, trailing empty coefficients, precision 2008 [homm] - Add (un)packing between RGBA and BGRa 2057 [arjennienhuis] - Added return for J2k (and fpx) Load to return a pixel access object 2061 [wiredfool] - Skip failing numpy tests on Pypy <= 5.3.1 2090 [arjennienhuis] - Show warning when trying to save RGBA image as JPEG 2010 [homm] - Respect pixel centers during transform 2022 [homm] - TOC for supported file formats 2056 [polarize] - Fix conversion of bit images to numpy arrays Fixes 350, 2058 [matthew-brett] - Add ImageOps.scale to expand or contract a PIL image by a factor 2011 [vlmath] - Flake8 fixes 2050 [hugovk] - Updated freetype to 2.6.5 on Appveyor builds 2035 [radarhere] - PCX encoder fixes 2023, pr 2041 [homm] - Docs: Windows console prompts are > 2031 [techtonik] - Expose Pillow package version as PIL.__version__ 2027 [techtonik] - Add Box and Hamming filters for resampling 1959 [homm] - Retain a reference to core image object in PyAccess 2009 [homm] ``` ### 3.3.3 ``` ------------------ - Fix fix for map.c overflow 2151 [wiredfool] ``` ### 3.3.2 ``` ------------------ - Fix negative image sizes in Storage.c 2105 [wiredfool] - Fix integer overflow in map.c 2105 [wiredfool] ``` ### 3.3.1 ``` ------------------ - Fix C90 compilation error for Tcl / Tk rewrite 2033 [matthew-brett] - Fix image loading when rotating by 0 deg 2052 [homm] ``` ### 3.3.0 ``` ------------------ - Fixed enums for Resolution Unit and Predictor in TiffTags.py 1998 [wiredfool] - Fix issue converting P mode to LA 1986 [didrix] - Moved test_j2k_overflow to check_j2k_overflow, prevent DOS of our 32bit testing machines 1995 [wiredfool] - Skip CRC checks in PNG files when LOAD_TRUNCATED_IMAGES is enabled 1991 [kkopachev] - Added CMYK mode for opening EPS files 1826 [radarhere] - Docs: OSX build instruction clarification 1994 [wiredfool] - Docs: Filter comparison table 1993 [homm] - Removal of pthread based Incremental.c, new interface for file decoders/encoders to access the python file. Fixes assorted J2k Hangs. 1934 [wiredfool] - Skip unnecessary passes when resizing 1954 [homm] - Removed duplicate code in ImagePalette 1832 [radarhere] - test_imagecms: Reduce precision of extended info due to 32 bit machine precision 1990 [AbdealiJK] - Binary Tiff Metadata/ICC profile. 1988 [wiredfool] - Ignore large text blocks in PNG if LOAD_TRUNCATED_IMAGES is enabled 1970 [homm] - Replace index = index+1 in docs with +=1 [cclauss] - Skip extra 0xff00 in jpeg 1977 [kkopachev] - Use bytearray for palette mutable storage 1985 [radarhere, wiredfool] - Added additional uint modes for Image.fromarray, more extensive tests of fromarray 1984 [mairsbw, wiredfool] - Fix for program importing PyQt4 when PyQt5 also installed 1942 [hugovk] - Changed depends/install_*.sh urls to point to github pillow-depends repo 1983 [wiredfool] - Allow ICC profile from `encoderinfo` while saving PNGs 1909 [homm] - Fix integer overflow on ILP32 systems (32-bit Linux). 1975 [lambdafu] - Change function declaration to match Tcl_CmdProc type 1966 [homm] - Integer overflow checks on all calls to *alloc 1781 [wiredfool] - Change equals method on Image so it short circuits 1967 [mattBoros] - Runtime loading of TCL/TK libraries, eliminating build time dependency. 1932 [matthew-brett] - Cleanup of transform methods 1941 [homm] - Fix "Fatal Python error: UNREF invalid object" in debug builds 1936 [wiredfool] - Setup fixes for Alpine linux 1937 [wiredfool] - Split resample into horizontal + vertical passes 1933 [homm] - Box blur with premultiplied alpha 1914 [homm] - Add libimagequant support in quantize() 1889 [rr-] - Added internal Premultiplied luminosity (La) mode 1912 [homm] - Fixed point integer resample 1881 [homm] - Removed docs/BUILDME script 1924 [radarhere] - Moved comments to docstrings 1926 [hugovk] - Include Python.h before wchar.h so _GNU_SOURCE is set consistently 1906 [hugovk] - Updated example decoder in documentation 1899 [radarhere] - Added support for GIF comment extension 1896 [radarhere] - Removed support for pre- 1.5.2 list form of Image info in Image.new 1897 [radarhere] - Fix typos in TIFF tags 1918 [radarhere] - Skip tests that require libtiff if it is not installed 1893 (fixes 1866) [wiredfool] - Skip test when icc profile is not available, fixes 1887 [doko42] - Make deprecated functions raise NotImplementedError instead of Exception. 1862, 1890 [daniel-leicht, radarhere] - Replaced os.system with subprocess.call in setup.py 1879 [radarhere] - Corrected Image show documentation 1886 [radarhere] - Added check for executable permissions to ImageShow 1880 [radarhere] - Fixed tutorial code and added explanation 1877 [radarhere] - Added OS X support for ImageGrab grabclipboard 1837 [radarhere] - Combined duplicate code in ImageTk 1856 [radarhere] - Added --disable-platform-guessing option to setup.py build extension 1861 [angeloc] - Fixed loading Transparent PNGs with a transparent black color 1840 [olt] - Add support for LA mode in Image.fromarray 1865 [pierriko] - Make ImageFile load images in read-only mode 1864 [hdante] - Added _accept hook for XVThumbImagePlugin 1853 [radarhere] - Test TIFF with LZW compression 1855, TGA RLE file 1854 [hugovk] - Improved SpiderImagePlugin help text 1863 [radarhere] - Updated Sphinx project description 1870 [radarhere] - Remove support for Python 3.0 from _imaging.c 1851 [radarhere] - Jpeg qtables are unsigned chars 1814, 1921 [thebostik] - Added additional EXIF tags 1841, TIFF Tags 1821 [radarhere] - Changed documentation to refer to ImageSequence Iterator 1833 [radarhere] - Fix Fedora prerequisites in installation docs, depends script 1842 [living180] - Added _accept hook for PixarImagePlugin 1843 [radarhere] - Removed outdated scanner classifier 1823 [radarhere] - Combined identical error messages in _imaging 1825 [radarhere] - Added debug option for setup.py to trace header and library finding 1790 [wiredfool] - Fix doc building on travis 1820, 1844 [wiredfool] - Fix for DIB/BMP images 1813, 1847 [wiredfool] - Add PixarImagePlugin file extension 1809 [radarhere] - Catch struct.errors when verifying png files 1805 [wiredfool] - SpiderImagePlugin: raise an error when seeking in a non-stack file 1794 [radarhere, jmichalon] - Added support for 2/4 bpp Tiff grayscale images 1789 [zwhfly] - Removed unused variable from selftest 1788 [radarhere] - Added warning for as_dict method (deprecated in 3.0.0) 1799 [radarhere] - Removed powf support for older Python versions 1784 [radarhere] - Health fixes 1625 1903 [radarhere] ``` ### 3.2.0 ``` ------------------ - Added install docs for Fedora 23 and FreeBSD 1729, 1739, 1792 [koobs, zandermartin, wiredfool] - Fixed TIFF multiframe load when the frames have different compression types 1782 [radarhere, geka000] - Added __copy__ method to Image 1772 [radarhere] - Updated dates in PIL license in OleFileIO README 1787 [radarhere] - Corrected Tiff tag names 1786 [radarhere] - Fixed documented name of JPEG property 1783 [radarhere] - Fixed UnboundLocalError when loading a corrupt jpeg2k file 1780 [wiredfool] - Fixed integer overflow in path.c 1773 [wiredfool, nedwill] - Added debug to command line help text for pilprint 1766 [radarhere] - Expose many more fields in ICC Profiles 1756 [lambdafu] - Documentation changes, URL update, transpose, release checklist [radarhere] - Fixed saving to nonexistant files specified by pathlib.Path objects 1748 (fixes 1747) [radarhere] - Round Image.crop arguments to the nearest integer 1745 (fixes 1744) [hugovk] - Fix uninitialized variable warning in _imaging.c:getink 1663 (fixes 486) [wiredfool] - Disable multiprocessing install on cygwin 1700 (fixes 1690) [wiredfool] - Fix the error reported when libz is not found 1764 [wiredfool] - More general error check to avoid Symbol not found: _PyUnicodeUCS2_AsLatin1String on OS X 1761 [wiredfool] - Added py35 to tox envlist 1724 [radarhere] - Fix EXIF tag name typos 1736 [zarlant, radarhere] - Updated freetype to 2.6.3, Tk/Tcl to 8.6.5 and 8.5.19 1725, 1752 [radarhere] - Add a loader for the FTEX format from Independence War 2: Edge of Chaos 1688 [jleclanche] - Improved alpha_composite documentation 1698 [radarhere] - Extend ImageDraw.text method to pass on multiline_text method specific arguments 1647 [radarhere] - Allow ImageSequence to seek to zero 1686 [radarhere] - ImageSequence Iterator is now an iterator 1649 [radarhere] - Updated windows test builds to jpeg9b 1673 [radarhere] - Fixed support for .gbr version 1 images, added support for version 2 in GbrImagePlugin 1653 [wiredfool] - Clarified which YCbCr format is used 1677 [radarhere] - Added TiffTags documentation, Moved windows build documentation to winbuild/ 1667 [wiredfool] - Add tests for OLE file based formats 1678 [radarhere] - Add TIFF IFD test 1671 [radarhere] - Add a basic DDS image plugin with more tests 1654 [jleclanche, hugovk, wiredfool] - Fix incorrect conditional in encode.c 1638 [manisandro] ``` ### 3.1.2 ``` ------------------ - Fixed an integer overflow in Jpeg2KEncode.c causing a buffer overflow. CVE-2016-3076 [wiredfool] ``` ### 3.1.1 ``` ------------------ - Fixed an integer overflow in Resample.c causing writes in the Python heap. [nedwill] - Fixed a buffer overflow in PcdDecode.c causing a segfault when opening PhotoCD files. CVE-2016-2533 [wiredfool] - Fixed a buffer overflow in FliDecode.c causing a segfault when opening FLI files. CVE-2016-0775 [wiredfool] - Fixed a buffer overflow in TiffDecode.c causing an arbitrary amount of memory to be overwritten when opening a specially crafted invalid TIFF file. CVE-2016-0740 [wiredfool] ``` ### 3.1.0 ``` ------------------ - Fixing test failures on Python 2.6/Windows 1633 [wiredfool] - Limit metadata tags when writing using libtiff 1620 [wiredfool] - Rolling back exif support to pre-3.0 format 1627 [wiredfool] - Fix Divide by zero in Exif, add IFDRational class 1531 [wiredfool] - Catch the IFD error near the source 1622 [wiredfool] - Added release notes for 3.1.0 1623 [radarhere] - Updated spacing to be consistent between multiline methods 1624 [radarhere] - Let EditorConfig take care of some basic formatting 1489 [hugovk] - Restore gpsexif data to the v1 form 1619 [wiredfool] - Add /usr/local include and library directories for freebsd 1613 [leforestier] - Updated installation docs for new versions of dependencies 1611 [radarhere] - Removed unrunnable test file 1610 [radarhere] - Changed register calls to use format property 1608 [radarhere] - Added field type constants to TiffTags 1596 [radarhere] - Allow saving RowsPerStrip with libtiff 1594 [wiredfool] - Enabled conversion to numpy array for HSV images 1578 [cartisan] - Changed some urls in the docs to use https 1580 [hugovk] - Removed logger.exception from ImageFile.py 1590 [radarhere] - Removed warnings module check 1587 [radarhere] - Changed arcs, chords and pie slices to use floats 1577 [radarhere] - Update unit test asserts 1584, 1598 [radarhere] - Fix command to invoke ghostscript for eps files 1478 [baumatron, radarhere] - Consistent multiline text spacing 1574 [wiredfool, hugovk] - Removed unused lines in BDFFontFile 1530 [radarhere] - Changed ImageQt import of Image 1560 [radarhere, ericfrederich] - Throw TypeError if no cursors were found in .cur file 1556 [radarhere] - Fix crash in ImageTk.PhotoImage on win-amd64 1553 [cgohlke] - ExtraSamples tag should be a SHORT, not a BYTE 1555 [Nexuapex] - Docs and code health fixes 1565 1566 1581 1586 1591 1621 [radarhere] - Updated freetype to 2.6.2 1564 [radarhere] - Updated WebP to 0.5.0 for Travis 1515 1609 [radarhere] - Fix missing 'version' key value in __array_interface__ 1519 [mattip] - Replaced os.popen with subprocess.Popen to pilprint script 1523 [radarhere] - Catch OverflowError in SpiderImagePlugin 1545 [radarhere, MrShark] - Fix the definition of icc_profile in TiffTags 1539 [wiredfool] - Remove old _imagingtiff.c and pilplus stuff 1499 [hugovk] - Fix Exception when requiring jpeg 1501 [hansmosh] - Dependency scripts for Debian and Ubuntu 1486 [wiredfool] - Added Usage message to painter script 1482 [radarhere] - Add tag info for iccprofile, fixes 1462. 1465 [wiredfool] - Added some requirements for make release-test 1451 [wiredfool] - Flatten tiff metadata value SAMPLEFORMAT to initial value 1467 (fixes 1466) [wiredfool] - Fix handling of pathlib in Image.save 1464 (fixes 1460) [wiredfool] - Make tests more robust 1469 [hugovk] - Use correctly sized pointers for windows handle types 1458 [nu744] ``` ### 3.0.0 ``` ------------------ - Check flush method existence for file-like object 1398 [mrTable, radarhere] - Added PDF multipage saving 1445 [radarhere] - Removed deprecated code, Image.tostring, Image.fromstring, Image.offset, ImageDraw.setink, ImageDraw.setfill, ImageFileIO, ImageFont.FreeTypeFont and ImageFont.truetype `file` kwarg, ImagePalette private _make functions, ImageWin.fromstring and ImageWin.tostring 1343 [radarhere] - Load more broken images 1428 [homm] - Require zlib and libjpeg 1439 [wiredfool] - Preserve alpha when converting from a QImage to a Pillow Image by using png instead of ppm 1429 [ericfrederich] - Qt needs 32 bit aligned image data 1430 [ericfrederich] - Tiff ImageFileDirectory rewrite 1419 [anntzer, wiredfool, homm] - Removed spammy debug logging 1423 [wiredfool] - Save as GiF89a with support for animation parameters 1384 [radarhere] - Correct convert matrix docs 1426 [wiredfool] - Catch TypeError in _getexif 1414 [radarhere, wiredfool] - Fix for UnicodeDecodeError in TiffImagePlugin 1416 [bogdan199, wiredfool] - Dedup code in image.open 1415 [wiredfool] - Skip any number extraneous chars at the end of JPEG chunks 1337 [homm] - Single threaded build for pypy3, refactor 1413 [wiredfool] - Fix loading of truncated images with LOAD_TRUNCATED_IMAGES enabled 1366 [homm] - Documentation update for concepts: bands 1406 [merriam] - Add Solaris/SmartOS include and library directories 1356 [njones11] - Improved handling of getink color 1387 [radarhere] - Disable compiler optimizations for topalette and tobilevel functions for all msvc versions 1402 (fixes 1357) [cgohlke] - Skip ImageFont_bitmap test if _imagingft C module is not installed 1409 [homm] - Add param documentation to ImagePalette 1381 [bwrsandman] - Corrected scripts path 1407 [radarhere] - Updated libtiff to 4.0.6 1405, 1421 [radarhere] - Updated Platform Support for Yosemite 1403 [radarhere] - Fixed infinite loop on truncated file 1401 [radarhere] - Check that images are L mode in ImageMorph methods 1400 [radarhere] - In tutorial of pasting images, add to mask text 1389 [merriam] - Style/health fixes 1391, 1397, 1417, 1418 [radarhere] - Test on Python 3.5 dev and 3.6 nightly 1361 [hugovk] - Fix fast rotate operations 1373 [radarhere] - Added support for pathlib Path objects to open and save 1372 [radarhere] - Changed register calls to use format property 1333 [radarhere] - Added support for ImageGrab.grab to OS X 1367, 1443 [radarhere, hugovk] - Fixed PSDraw stdout Python 3 compatibility 1365 [radarhere] - Added Python 3.3 to AppVeyor 1363 [radarhere] - Treat MPO with unknown header as base JPEG file 1350 [hugovk, radarhere] - Added various tests 1330, 1344 [radarhere] - More ImageFont tests 1327 [hugovk] - Use logging instead of print 1207 [anntzer] ``` ### 2.9.0 ``` ------------------ - Added test for GimpPaletteFile 1324 [radarhere] - Merged gifmaker script to allow saving of multi-frame GIF images 1320 [radarhere] - Added is_animated property to multi-frame formats 1319 [radarhere] - Fixed ValueError in Python 2.6 1315 1316 [cgohlke, radarhere] - Fixed tox test script path 1308 [radarhere] - Added width and height properties 1304 [radarhere] - Update tiff and tk tcl 8.5 versions 1303 [radarhere, wiredfool] - Add functions to convert: Image <-> QImage; Image <-> QPixmap 1217 [radarhere, rominf] - Remove duplicate code in gifmaker script 1294 [radarhere] - Multiline text in ImageDraw 1177 [allo-, radarhere] - Automated Windows CI/build support 1278 [wiredfool] - Removed support for Tk versions earlier than 8.4 1288 [radarhere] - Fixed polygon edge drawing 1255 (fixes 1252) [radarhere] - Check prefix length in _accept methods 1267 [radarhere] - Register MIME type for BMP 1277 [coldmind] - Adjusted ImageQt use of unicode() for 2/3 compatibility 1218 [radarhere] - Identify XBM file created with filename including underscore 1230 (fixes 1229) [hugovk] - Copy image when saving in GifImagePlugin 1231 (fixes 718) [radarhere] - Removed support for FreeType 2.0 1247 [radarhere] - Added background saving to GifImagePlugin 1273 [radarhere] - Provide n_frames attribute to multi-frame formats 1261 [anntzer, radarhere] - Add duration and loop set to GifImagePlugin 1172, 1269 [radarhere] - Ico files are little endian 1232 [wiredfool] - Upgrade olefile from 0.30 to 0.42b 1226 [radarhere, decalage2] - Setting transparency value to 0 when the tRNS contains only null byte(s) 1239 [juztin] - Separated out feature checking from selftest 1233 [radarhere] - Style/health fixes [radarhere] - Update WebP from 0.4.1 to 0.4.3 1235 [radarhere] - Release GIL during image load (decode) 1224 [lkesteloot] - Added icns save 1185 [radarhere] - Fix putdata memory leak 1196 [benoit-pierre] - Keep user-specified ordering of icon sizes 1193 [karimbahgat] - Tiff: allow writing floating point tag values 1113 [bpedersen2] ``` ### 2.8.2 ``` ------------------ - Bug fix: Fixed Tiff handling of bad EXIF data [radarhere] ```Links
- PyPI: https://pypi.org/project/pillow - Changelog: https://pyup.io/changelogs/pillow/ - Homepage: https://python-pillow.org