Commit Graph

2441 Commits

Author SHA1 Message Date
Andrew Murray
691df96734 Fixed opening mmap image through Path on Windows 2019-05-04 15:00:49 +10:00
Andrew Murray
21c7fd251c Fixed arc gaps 2019-05-03 23:37:37 +10:00
Andrew Murray
27134340f5 Expand GIF to include frames with extents outside the image size 2019-05-02 19:46:17 +10:00
Andrew Murray
ca0d28eae5 Added reading of CMYK;16L TIFF images 2019-05-01 00:42:30 +10:00
Andrew Murray
d9a3878937 Fixed ImageTk getimage 2019-04-29 23:43:13 +10:00
Andrew Murray
70038bd71e Added option to include layered windows in ImageGrab.grab on Windows 2019-04-26 20:09:46 +10:00
Andrew Murray
ca1cf59251 Changed decode buffer size to Py_ssize_t 2019-04-15 17:33:28 +10:00
Andrew Murray
73cb0ce15f Fixed numpy bool bug 2019-04-13 00:25:59 +10:00
Andrew Murray
b742d1511e Fixed raqm layout bug 2019-04-11 15:36:33 +10:00
Andrew Murray
4e6aa7d6d3 Fixed loading font with non-Unicode path on Windows 2019-04-10 07:04:59 +10:00
Riley Lahd
5fb36d2de4 Merge branch 'master' of https://github.com/python-pillow/Pillow 2019-04-09 08:24:52 -06:00
Hugo
b636dde501
Merge pull request #3765 from hugovk/rm-eol-trusty
Drop support for EOL Ubuntu 14.04 (Trusty Tahr)
2019-04-06 13:19:21 +03:00
Andrew Murray
2274c2afc7 Fixed reading APP13 marker without Photoshop data 2019-04-05 20:02:45 +11:00
Andrew Murray
4f3b44960f Resolved segfaults 2019-04-02 09:25:27 +11:00
Hugo
1c3da86ae7 Remove workaround for EOL Trusty/Precise 2019-04-01 17:45:32 +03:00
Andrew Murray
40bc46ff49 Moved ImageFile.Exif to Image.Exif 2019-04-01 20:03:02 +11:00
Andrew Murray
8f0db65cd7 Allow exif_transpose to work on Image instances as well as ImageFile 2019-04-01 19:37:25 +11:00
Andrew Murray
38fb9b1030 Delete EXIF orientation tag after transposing 2019-04-01 18:49:09 +11:00
Hugo
c8257b30dd
Merge pull request #3687 from radarhere/exif_transpose
Add ImageOps exif_transpose method
2019-04-01 10:23:33 +03:00
Hugo
7d378a8e4c
Merge pull request #3625 from radarhere/exif
Add EXIF class
2019-04-01 10:20:05 +03:00
Andrew Murray
f707affbde
Merge pull request #3615 from hugovk/imagecms-deprecations
Add warnings to deprecated CMS profile attributes
2019-04-01 17:35:32 +11:00
Hugo
4f8cfd536b
Merge pull request #3721 from radarhere/quantize
Update palette in quantize
2019-03-30 12:07:38 +02:00
Hugo
05849ca794
Merge pull request #3714 from radarhere/tiff_frames
Improvements to TIFF is_animated and n_frames
2019-03-30 12:04:16 +02:00
Hugo
69ed0aa5b5
Merge pull request #3728 from radarhere/pa_mode
Improvements to PA and LA conversion and palette operations
2019-03-30 12:00:06 +02:00
Andrew Murray
c96cdb5e77 Consistent DPI rounding 2019-03-30 15:03:57 +11:00
Andrew Murray
dba38912fb Allow putpalette for LA and PA 2019-03-29 23:13:50 +11:00
Andrew Murray
819b8acd26 Improved PA conversion 2019-03-29 23:13:07 +11:00
Alex Clark
c8ee701013
Merge pull request #3752 from hugovk/update-classifiers
Update Trove licence classifiers
2019-03-28 14:18:58 -04:00
Andrew Murray
64910d1921 Parse Nintendo and Fujifilm MakerNote tags 2019-03-28 21:13:12 +11:00
Andrew Murray
3caec4344e Added get_ifd method to access embedded IFDs 2019-03-28 21:13:12 +11:00
Andrew Murray
d5db62be7b Added EXIF class 2019-03-28 21:13:12 +11:00
Hugo
3b92de5ddc
Merge pull request #3588 from radarhere/mpo_frame_size
Change size of MPO image to match frame
2019-03-28 12:01:33 +02:00
Hugo
ace5ba4418
Merge pull request #3701 from radarhere/photoshop
Read Photoshop resolution data
2019-03-28 11:55:13 +02:00
Hugo
a93bcdfe0c
Merge pull request #3724 from radarhere/readonly_save
Ensure image is mutable before saving
2019-03-28 11:53:33 +02:00
Hugo
0572983104
Merge pull request #3726 from radarhere/pa
Promote P images to PA in putalpha
2019-03-28 11:44:52 +02:00
Andrew Murray
a5b62857b0 Change size of MPO image to match frame 2019-03-28 08:33:17 +11:00
Andrew Murray
d84fd20f0c Simplified is_animated 2019-03-28 08:13:47 +11:00
Hugo
adbe97594e
Merge pull request #3719 from radarhere/p_rgb_rgba
Allow RGB and RGBA values for new P images
2019-03-27 18:03:23 +02:00
Hugo
82848905e6
Merge pull request #3713 from radarhere/tiff_seek
Fixed TIFF bug when seeking backwards and then forwards
2019-03-27 17:58:34 +02:00
Hugo
90886b1888
Merge branch 'master' into imagecms-deprecations 2019-03-27 12:03:54 +02:00
hugovk
b21ea99fd9 Relax incorrect pyroma test 2019-03-26 22:59:59 +02:00
Andrew Murray
4a5666f1f4 Added transparency for all PNG greyscale modes 2019-03-27 07:41:33 +11:00
Andrew Murray
8ba76f9a10 Added support for I;16 modes for remaining transpose operations 2019-03-23 14:13:39 +11:00
Andrew Murray
31ac5a96d1
Merge pull request #3716 from radarhere/gif_rewind
Fixed GIF bug when rewinding to a non-zero frame
2019-03-23 10:46:41 +11:00
Riley Lahd
ad70fc73cb Linting changes 2019-03-22 08:26:16 -06:00
Riley Lahd
4b2746fc39 Remove disposal 2 duplicate frame exemption and add true delta test 2019-03-22 08:19:01 -06:00
Andrew Murray
15f8ef02c9 Updated freetype to 2.10.0 2019-03-22 21:14:39 +11:00
Andrew Murray
f61828acdc Promote P images to PA in putalpha 2019-03-19 11:13:58 +11:00
Hugo
b8ea8814f0
Merge pull request #3683 from radarhere/exclusive
Only close original fp in __del__ and __exit__ if original fp is exclusive
2019-03-18 20:37:21 +02:00
Jon Dufresne
6d46ae2e8f Fix BytesWarning in Tests/test_numpy.py
When running Python with the `-b` command line argument, fixes warnings:

    Tests/test_numpy.py::TestNumpy::test_1bit
      Pillow/Tests/test_numpy.py:118: BytesWarning: Comparison between bytes and string
        arr_bool = numpy.array([[1, 0, 0, 1, 0], [0, 1, 0, 0, 0]], 'bool')

    Tests/test_numpy.py::TestNumpy::test_point_lut
      Pillow/Tests/test_numpy.py:170: BytesWarning: Comparison between bytes and string
        lut = numpy.array(data, dtype='uint8')

    Tests/test_numpy.py::TestNumpy::test_to_array
      Pillow/Tests/test_numpy.py:146: BytesWarning: Comparison between bytes and string
        self.assertEqual(np_img.dtype, numpy.dtype(dtype))
2019-03-17 10:08:33 -07:00
Andrew Murray
0b62337b6f Ensure image is mutable before saving 2019-03-17 23:37:40 +11:00
Andrew Murray
7dfbdc01f4 Fixed bug when rewinding to a non-zero frame 2019-03-16 20:02:24 +11:00
Andrew Murray
5b9c11b426 Update palette in quantize 2019-03-16 13:36:58 +11:00
Andrew Murray
6790c2e375 Allow RGB and RGBA values for new P images 2019-03-15 17:35:05 +11:00
Andrew Murray
0b630e06dc Test that background colours read are equal to saved colours 2019-03-15 10:29:33 +11:00
Riley Lahd
85a07bb385 Linting changes 2019-03-14 14:51:13 -06:00
Riley Lahd
96c5a4c543 Add test for disposal mode 2 gifs 2019-03-14 14:40:31 -06:00
Andrew Murray
0ad09f7386
Merge branch 'master' into mime-types 2019-03-15 07:06:59 +11:00
Andrew Murray
ab85290911 Fixed bug when seeking backwards and then forwards 2019-03-13 18:54:09 +11:00
Hugo
e3eac00b1f
Merge pull request #3566 from radarhere/i16
Added I;16 PNG save
2019-03-12 12:25:53 +02:00
Hugo
b3587f0fb7
Merge pull request #3705 from radarhere/bmp
Add support for BMP RGBA bitfield compression
2019-03-12 11:36:04 +02:00
Andrew Murray
ce9dd67540 Added I;16 PNG save 2019-03-12 17:28:42 +11:00
Ben Yang
9f390a5192 uncommented test 2019-03-11 18:56:22 -07:00
Ben Yang
5cdbec0cfe added test for attempting to apply complex settings to fonts when using basic layout engine 2019-03-11 18:56:22 -07:00
Ben Yang
386492ff54 wrong test_language.png committed, whoops! fixed 2019-03-11 18:56:22 -07:00
Ben Yang
7324a32443 fixed some whitespace to pass linting 2019-03-11 18:56:22 -07:00
Ben Yang
8624efd283 added ability to set language for text rendering 2019-03-11 18:55:46 -07:00
Andrew Murray
22b0110f89 Only close original fp in __del__ and __exit__ if original fp is exclusive 2019-03-12 08:54:43 +11:00
Hugo
125a001b66
Merge pull request #3698 from radarhere/context
Only close exclusive fp on Image __exit__
2019-03-11 21:41:44 +02:00
Konstantin Kopachev
28c6f555a2
Merge remote-tracking branch 'remotes/upstream/master' into tiff-old-jpeg 2019-03-11 10:38:02 -07:00
Andrew Murray
8ddcc1de52 Load EXIF from PNG where eXIf chunk is after first IDAT chunk 2019-03-11 21:20:18 +11:00
Andrew Murray
365d5e541a Added EXIF support 2019-03-11 21:19:36 +11:00
Hugo
63f31ee380
Merge pull request #3699 from glasnt/topic/quantize-dither
Add option to set dither param on quantize
2019-03-11 12:18:32 +02:00
Hugo
5da0d5beee
Merge pull request #3673 from radarhere/dds
Add reading of DDS uncompressed RGB data
2019-03-11 12:04:47 +02:00
Hugo
c88ada1dcd
Merge pull request #3672 from radarhere/tiff_tag_type
Corrected length of Tiff BYTE tags
2019-03-11 11:59:29 +02:00
Andrew Murray
5277eec027 Added support for RGBA bitfield compression 2019-03-09 11:11:32 +11:00
Katie McLaughlin
0b63579f39 Add option to set dither param on quantize
Default the option to `1`, as per original setting
2019-03-09 10:36:13 +11:00
Andrew Murray
b1cc7df7ba Only close exclusive fp on Image __exit__ 2019-03-06 21:55:32 +11:00
Andrew Murray
1bdb5dc917 Added DIB saving and loading through Image open 2019-03-06 13:59:07 +11:00
Andrew Murray
636ad68f5e Read Photoshop resolution data 2019-03-06 10:28:45 +11:00
Andrew Murray
7d3b8e8cea
Merge branch 'master' into mime-types 2019-03-06 07:08:00 +11:00
Andrew Murray
4be51c46eb Added mime types 2019-03-04 18:17:12 +11:00
Andrew Murray
873603701f Added .pnm test 2019-03-04 15:51:07 +11:00
Andrew Murray
8f34621c14 Added mime type tests 2019-03-04 15:51:07 +11:00
Andrew Murray
1ba774ae7f Added ImageOps exif_transpose method 2019-03-04 11:49:39 +11:00
Andrew Murray
525eaf7389 Renamed file variable 2019-03-03 13:02:00 +11:00
Andrew Murray
57807e9ce2
Merge pull request #3624 from hugovk/rm-VERSION
Remove deprecated VERSION
2019-03-02 11:47:59 +11:00
Hugo
d9f5f44799
Merge pull request #3632 from radarhere/thumbnail
Do not resize in Image.thumbnail if already the destination size
2019-02-27 23:37:20 +02:00
Hugo
2e374cf1ad
Merge pull request #3568 from jdufresne/isatty-bool
Make ContainerIO.isatty() return a bool, not int
2019-02-27 23:28:51 +02:00
Hugo
2f5f80f47e
Merge pull request #3563 from radarhere/transpose
Added support for I;16 modes for more transpose operations
2019-02-27 23:22:52 +02:00
Andrew Murray
bbfbda3d4f Added tests for unimplemented formats 2019-02-23 08:53:45 +11:00
Andrew Murray
148d320b40 Added reading of uncompressed RGB data 2019-02-23 06:44:06 +11:00
Andrew Murray
dd0e4ac0a1 Corrected length of Tiff BYTE tags 2019-02-22 23:17:26 +11:00
Andrew Murray
7477036230
Merge branch 'master' into imagecms-deprecations 2019-02-21 20:00:27 +11:00
Andrew Murray
5d9898b686
Merge pull request #3655 from hugovk/deprecate-eol-qt
Deprecate support for PyQt4 and PySide
2019-02-21 19:22:34 +11:00
Andrew Murray
d07d3d6972 Restored required import 2019-02-20 20:57:52 +11:00
Hugo
65c55402b9
Merge pull request #3537 from radarhere/pickle
Fixed pickling of iTXt class with protocol > 1
2019-02-20 11:50:30 +02:00
Hugo
8cd0432e65
Merge pull request #3616 from wbadart/master
_util.isPath returns True for pathlib.Path objects
2019-02-20 11:48:12 +02:00
Andrew Murray
38b5255f58 Catch DeprecationWarning from initial import 2019-02-16 12:36:10 +11:00
Andrew Murray
b0f429adca
Line too long 2019-02-15 22:12:40 +11:00
Andrew Murray
6fc7460f9e
Restored newline at end of file 2019-02-15 20:47:00 +11:00
Andrew Murray
1a7a1123e6
Merge branch 'master' into tiff-old-jpeg 2019-02-15 19:56:17 +11:00
Hugo
3c088db7ba Depreate support for EOL PyQt4 and PySide 2019-02-14 22:59:14 +02:00
Hugo
3ff70c2afc
Merge branch 'master' into imagecms-deprecations 2019-02-13 15:45:28 +02:00
Andrew Murray
1162b4cf83 Do not resize if already the destination size 2019-02-13 19:26:37 +11:00
Hugo
dc3c64a0e3
Merge pull request #3631 from jdufresne/test-main
Remove unnecessary unittest.main() boilerplate from test files
2019-02-12 18:12:29 +02:00
Hugo
4ccdbf25cf
Merge pull request #3584 from radarhere/ifd_offset
Seek to IFD offset
2019-02-12 18:10:25 +02:00
Hugo
aed56efa50
Apply suggestions from code review
Rename `fp` to `test_path` in the new `test_is_path` test.

^ Wow, what a sentence...

Co-Authored-By: wbadart <wbadart@live.com>
2019-02-04 10:36:34 -05:00
Jon Dufresne
4de5477b61 Remove unnecessary unittest.main() boilerplate from test files
With the introduction and use of pytest, it is simple and easy to
execute specific tests in isolation through documented command line
arguments. Either by specifying the module path or through the `-k
EXPRESSION` argument. There is no longer any need to provide the
boilerplate:

    if __name__ == '__main__':
        unittest.main()

To every test file. It is simply noise.

The pattern remains in test files that aren't named with `test_*` as
those files are not discovered and executed by pytest by default.
2019-02-03 10:10:16 -08:00
Hugo
d02e2b5392
Merge pull request #3558 from radarhere/png
Allow for unknown PNG chunks after image data
2019-02-03 11:57:21 +02:00
Hugo
1885a2cef5
Merge pull request #3579 from jdufresne/run-one-test
Improve pytest configuration to allow specific tests as CLI args
2019-02-03 11:30:57 +02:00
Andrew Murray
a33e71a9df Changed string to comment 2019-02-03 15:59:24 +11:00
Hugo
158d99b8b0 Remove deprecated VERSION 2019-01-30 15:46:14 +02:00
Hugo
187ba3f6e8 Flake8: Fix F723 syntax error in type comment 'dummy value'; it's just a comment, not a Mypy type 2019-01-30 11:53:26 +02:00
Will Badart
c328ecace3
Fix lint error
Removed missing import in test_util.py. Stopped needing it after I
started reusing the py36 test from the _util module.
2019-01-28 20:08:25 -05:00
Will Badart
07bff3e9b8
Implement @hugovk's comments
The `py36` flag now uses a tuple comparison to correctly handle future
major version. The unit test file also now uses `py36` as exported by
the _util module, rather than re-testing `sys.version_info`.
2019-01-28 19:45:53 -05:00
Will Badart
37b182793e
test_is_path calls the correct function
Before, the test called the isStringType utility, which has its own,
separate test.
2019-01-28 12:23:19 -05:00
Will Badart
adae7ecc6a
_util.isPath returns True for pathlib.Path objects
Now, for functions which accept either a path or file object, the
predicate will pass on Paths and not attempt to call .read on them
before opening.

The pathlib module was added in 3.4 but os.path functions did not start
accepting path-like objects until 3.6, so that is the version after
which this implementation is defined.

Added a unit test to make sure isPath accepts Path objects. The unit
test is skipped if python version is not 3.6 or later.
2019-01-28 12:19:21 -05:00
Hugo
a2a5ebfeb4 Refactor 2019-01-28 15:40:19 +02:00
Hugo
a9070f3ca2 Group deprecation tests 2019-01-28 15:40:19 +02:00
Hugo
3476474359 Add warnings to deprecated CMS profile attributes 2019-01-28 15:40:19 +02:00
Hugo
e1381d2102 Add warnings to deprecated CMS profile attributes 2019-01-28 15:40:19 +02:00
Hugo
a149c13d2e Add warnings to deprecated CMS profile attributes 2019-01-28 15:40:19 +02:00
Hugo
7d157bd825 Add warnings to deprecated CMS profile attributes 2019-01-28 15:40:19 +02:00
Hugo
e7eac4f80b Add warnings to deprecated CMS profile attributes 2019-01-28 15:40:19 +02:00
Hugo
1b91ae361d
Merge pull request #3599 from hugovk/rm-deprecated-imageops
Remove deprecated ImageOps functions
2019-01-26 19:48:17 +02:00
Hugo
d6055440d5 Drop support for EOL Python 3.4 2019-01-24 23:33:14 +02:00
Hugo
b41ffe585b Remove deprecated ImageOps functions 2019-01-19 20:00:55 +02:00
Andrew Murray
0481d0ac1e Seek to IFD offset 2019-01-16 06:55:37 +11:00
Andrew Murray
06f47ea546 Revert "Use bare 'raise' to re-raise exceptions"
This reverts commit 80e96b2c7b.
2019-01-14 21:55:47 +11:00
Andrew Murray
811a6ae9f2
Merge pull request #3575 from jdufresne/bare-raise
Use bare 'raise' to re-raise exceptions
2019-01-14 15:39:20 +11:00
Jon Dufresne
7da17ad41e Improve pytest configuration to allow specific tests as CLI args
The previous test configuration made it difficult to run a single test
with the pytest CLI. There were two major issues:

- The Tests directory was not a package. It now includes a __init__.py
  file and imports from other tests modules are done with relative
  imports.

- setup.cfg always specified the Tests directory. So even if a specific
  test were specified as a CLI arg, this configuration would also always
  include all tests. This configuration has been removed to allow
  specifying a single test on the command line.

Contributors can now run specific tests with a single command such as:

  $ tox -e py37 -- Tests/test_file_pdf.py::TestFilePdf.test_rgb

This makes it easy and faster to iterate on a single test failure and is
very familiar to those that have previously used tox and pytest.

When running tox or pytest with no arguments, they still discover and
runs all tests in the Tests directory.
2019-01-13 09:00:12 -08:00
Jon Dufresne
80e96b2c7b Use bare 'raise' to re-raise exceptions
Slightly more concise and nicer syntax
2019-01-12 18:45:37 -08:00
Jon Dufresne
3e28ba3b7d Python del is a statement not a function
https://docs.python.org/3/reference/simple_stmts.html#the-del-statement
2019-01-12 18:28:35 -08:00
Jon Dufresne
a08bfa6e9f Make ContainerIO.isatty() return a bool, not int
Better follows the interface of IOBase.isatty:

https://docs.python.org/3/library/io.html#io.IOBase.isatty
2019-01-12 16:48:05 -08:00
Andrew Murray
7acaf3d6a6 Added support for I;16 modes for more transpose operations 2019-01-10 07:26:52 +11:00
Andrew Murray
4e0a73b4fa Allow for unknown PNG chunks after image data 2019-01-08 07:21:25 +11:00
Jon Dufresne
8a05aae988 Remove unused PillowTestCase.__str__
With the move to pytest, the class's string method is unused. pytest has
its own test progress outputter.
2019-01-06 15:18:18 -08:00
Hugo van Kemenade
4d1be57256
Merge pull request #3540 from radarhere/fp
Only close __fp if not fp
2019-01-06 12:53:04 +02:00
Hugo van Kemenade
22b0f53eb9
Merge pull request #3532 from radarhere/png_load_end_idat
PNG: Handle IDAT chunks after image end
2019-01-05 12:08:58 +02:00
Andrew Murray
71b64dcf73 Only close __fp if not fp 2019-01-04 12:29:23 +11:00
Andrew Murray
ea2a0e4654 Handle IDAT chunks after image end 2019-01-03 19:13:19 +11:00
hugovk
9dbaf92f3e itxt_chunks.png fails with protocol v2 2019-01-03 09:31:55 +11:00
hugovk
1b338998dc Test a png file with iTXt chunks 2019-01-03 09:31:55 +11:00
Andrew Murray
bd7422f934 Detect whether mimetype is image/jp2 or image/jpx 2019-01-02 15:39:39 +11:00
Andrew Murray
42e2bed4a6 If SGI image is RGB mode, then apply image/rgb mimetype 2019-01-02 14:13:37 +11:00
Andrew Murray
97ae0c42b1 Detect whether mimetype is image/png or image/apng 2019-01-02 14:13:10 +11:00
Andrew Murray
671f7a392d Allow RGBA value for P image putpixel 2018-12-31 13:37:04 +11:00
Andrew Murray
3f6282e259 Allow RGB value for P image putpixel 2018-12-31 11:35:15 +11:00
Andrew Murray
0c0f769351 Allow EPS tests that do not require Ghostscript 2018-12-30 20:50:09 +11:00