All Versions
80
Latest Version
Avg Release Cycle
56 days
Latest Release
111 days ago

Changelog History
Page 3

  • v5.3.0 Changes

    October 01, 2018
    • ๐Ÿ”„ Changed Image size property to be read-only by default #3203 [radarhere]

    • โž• Add warnings if image file identification fails due to lack of WebP support #3169 [radarhere, hugovk]

    • ๐Ÿ Hide the Ghostscript progress dialog popup on Windows #3378 [hugovk]

    • โž• Adding support to reading tiled and YcbCr jpeg tiffs through libtiff #3227 [kkopachev]

    • ๐Ÿ›  Fixed None as TIFF compression argument #3310 [radarhere]

    • ๐Ÿ”„ Changed GIF seek to remove previous info items #3324 [radarhere]

    • ๐Ÿ‘Œ Improved PDF document info #3274 [radarhere]

    • โž• Add line width parameter to rectangle and ellipse-based shapes #3094 [hugovk, radarhere]

    • ๐Ÿ›  Fixed decompression bomb check in _crop #3313 [dinkolubina, hugovk]

    • โž• Added support to ImageDraw.floodfill for non-RGB colors #3377 [radarhere]

    • โœ… Tests: Avoid catching unexpected exceptions in tests #2203 [jdufresne]

    • ๐Ÿ‘‰ Use TextIOWrapper.detach() instead of NoCloseStream #2214 [jdufresne]

    • โž• Added transparency to matrix conversion #3205 [radarhere]

    • โž• Added ImageOps pad method #3364 [radarhere]

    • Give correct extrema for I;16 format images #3359 [bz2]

    • โž• Added PySide2 #3279 [radarhere]

    • Corrected TIFF tags #3369 [radarhere]

    • โšก๏ธ CI: Install CFFI and pycparser without any PYTHONOPTIMIZE #3374 [hugovk]

    • Read/Save RGB webp as RGB (instead of RGBX) #3298 [kkopachev]

    • ImageDraw: Add line joints #3250 [radarhere]

    • ๐Ÿ‘Œ Improved performance of ImageDraw floodfill method #3294 [yo1995]

    • ๐Ÿ›  Fix builds with --parallel #3272 [hsoft]

    • โž• Add more raw Tiff modes (RGBaX, RGBaXX, RGBAX, RGBAXX) #3335 [homm]

    • Close existing WebP fp before setting new fp #3341 [radarhere]

    • โž• Add orientation, compression and id_section as TGA save keyword arguments #3327 [radarhere]

    • Convert int values of RATIONAL TIFF tags to floats #3338 [radarhere, wiredfool]

    • ๐Ÿ›  Fix code for PYTHONOPTIMIZE #3233 [hugovk]

    • ๐Ÿ”„ Changed ImageFilter.Kernel to subclass ImageFilter.BuiltinFilter, instead of the other way around #3273 [radarhere]

    • Remove unused draw.draw_line, draw.draw_point and font.getabc methods #3232 [hugovk]

    • โœ… Tests: Added ImageFilter tests #3295 [radarhere]

    • โœ… Tests: Added ImageChops tests #3230 [hugovk, radarhere]

    • AppVeyor: Download lib if not present in pillow-depends #3316 [radarhere]

    • Travis CI: Add Python 3.7 and Xenial #3234 [hugovk]

    • ๐Ÿ“„ Docs: Added documentation for NumPy conversion #3301 [radarhere]

    • โšก๏ธ Depends: Update libimagequant to 2.12.1 #3281 [radarhere]

    • โž• Add three-color support to ImageOps.colorize #3242 [tsennott]

    • โœ… Tests: Add LA to TGA test modes #3222 [danpla]

    • Skip outline if the draw operation fills with the same colour #2922 [radarhere]

    • ๐Ÿ›  Flake8 fixes #3173, #3380 [radarhere]

    • ๐Ÿ—„ Avoid deprecated 'U' mode when opening files #2187 [jdufresne]

  • v5.2.0 Changes

    July 01, 2018
    • ๐Ÿ›  Fixed saving a multiframe image as a single frame PDF #3137 [radarhere]

    • If a Qt version is already imported, attempt to use it first #3143 [radarhere]

    • ๐Ÿ›  Fix transform fill color for alpha images #3147 [fozcode]

    • ๐Ÿ‘ TGA: Add support for writing RLE data #3186 [danpla]

    • TGA: Read and write LA data #3178 [danpla]

    • ๐Ÿšš QuantOctree.c: Remove erroneous attempt to average over an empty range #3196 [tkoeppe]

    • ๐Ÿ”„ Changed ICNS format tests to pass on OS X 10.11 #3202 [radarhere]

    • ๐Ÿ›  Fixed bug in ImageDraw.multiline_textsize() #3114 [tianyu139]

    • โž• Added getsize_multiline support for PIL.ImageFont #3113 [tianyu139]

    • Added ImageFile get_format_mimetype method #3190 [radarhere]

    • ๐Ÿ”„ Changed mmap file pointer to use context manager #3216 [radarhere]

    • ๐Ÿ”„ Changed ellipse point calculations to be more evenly distributed #3142 [radarhere]

    • Only extract first Exif segment #2946 [hugovk]

    • โœ… Tests: Test ImageDraw2, WalImageFile #3135, #2989 [hugovk]

    • โœ‚ Remove unnecessary '#if 0' code #3075 [hugovk]

    • โœ… Tests: Added GD tests #1817 [radarhere]

    • ๐Ÿ›  Fix collections ABCs DeprecationWarning in Python 3.7 #3123 [hugovk]

    • unpack_from is faster than unpack of slice #3201 [landfillbaby]

    • ๐Ÿ“„ Docs: Add coordinate system links and file handling links in documentation #3204, #3214 [radarhere]

    • ๐Ÿ’พ Tests: TestFilePng: Fix test_save_l_transparency() #3182 [danpla]

    • ๐Ÿ“„ Docs: Correct argument name #3171 [radarhere]

    • ๐Ÿ“„ Docs: Update CMake download URL #3166 [radarhere]

    • ๐Ÿ“„ Docs: Improve Image.transform documentation #3164 [radarhere]

    • ๐Ÿ›  Fix transform fillcolor argument when image mode is RGBA or LA #3163 [radarhere]

    • โœ… Tests: More specific Exception testing #3158 [radarhere]

    • โž• Add getrgb HSB/HSV color strings #3148 [radarhere]

    • ๐Ÿ‘ Allow float values in getrgb HSL color string #3146 [radarhere]

    • โฌ†๏ธ AppVeyor: Upgrade to Python 2.7.15 and 3.4.4 #3140 [radarhere]

    • โฌ†๏ธ AppVeyor: Upgrade to PyPy 6.0.0 #3133 [hugovk]

    • ๐Ÿ—„ Deprecate PILLOW_VERSION and VERSION #3090 [hugovk]

    • ๐Ÿ‘Œ Support Python 3.7 #3076 [hugovk]

    • โšก๏ธ Depends: Update freetype to 2.9.1, libjpeg to 9c, libwebp to 1.0.0 #3121, #3136, #3108 [radarhere]

    • ๐ŸŽ Build macOS wheels with Xcode 6.4, supporting older macOS versions #3068 [wiredfool]

    • ๐Ÿ›  Fix _i2f compilation on some GCC versions #3067 [homm]

    • ๐Ÿ”„ Changed encoderinfo to have priority over info when saving GIF images #3086 [radarhere]

    • ๐Ÿšš Rename PIL.version to PIL._version and remove it from module #3083 [homm]

    • Enable background colour parameter on rotate #3057 [storesource]

    • โœ‚ Remove unnecessary #if 1 directive #3072 [jdufresne]

    • โœ‚ Remove unused Python class, Path #3070 [jdufresne]

    • ๐Ÿ›  Fix dereferencing type-punned pointer will break strict-aliasing #3069 [jdufresne]

  • v5.1.0 Changes

    April 02, 2018
    • 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]

  • v5.0.0 Changes

    January 01, 2018
    • ๐Ÿ“„ 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]

  • v4.3.0 Changes

    October 02, 2017
    • ๐Ÿ›  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 #2746 [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]

    • 0๏ธโƒฃ 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 #2704 [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]

  • v4.2.1 Changes

    July 06, 2017
    • ๐Ÿ CI: Fix version specification and test on CI for PyPy/Windows #2608 [wiredfool]
  • v4.2.0 Changes

    July 01, 2017
    • ๐Ÿ“š Doc: Clarified Image.save:append_images documentation #2604 [radarhere]

    • ๐Ÿง CI: Amazon Linux and Centos6 docker images added to Travis CI #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 Travis CI #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]

  • v4.1.1 Changes

    April 28, 2017
    • ๐Ÿ‘€ 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]

  • v4.1.0 Changes

    April 03, 2017
    • 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]

    • 0๏ธโƒฃ 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]

  • v4.0.0 Changes

    January 01, 2017
    • โ™ป๏ธ 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. #2327 [wiredfool]

    • ๐Ÿ‘ Allow 0 size images, Fixes #2259, Reverts to pre-3.4 behavior. #2262 [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 deprecated 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]