Commit Graph

611 Commits

Author SHA1 Message Date
pirate486743186
a62c825922 adding some missing mime types and extensions
for reference

https://en.wikipedia.org/wiki/BMP_file_format
https://en.wikipedia.org/wiki/ICO_(file_format)
https://en.wikipedia.org/wiki/Pcx
https://en.wikipedia.org/wiki/Netpbm_format
https://en.wikipedia.org/wiki/.tga
2019-03-04 15:44:39 +11:00
Andrew Murray
1ba774ae7f Added ImageOps exif_transpose method 2019-03-04 11:49:39 +11:00
Hugo
571aca6610
Merge pull request #3685 from radarhere/file
Renamed file variable
2019-03-03 10:15:33 +02:00
Andrew Murray
525eaf7389 Renamed file variable 2019-03-03 13:02:00 +11:00
Frédéric Chapoton
e514fbbbb1
use the already import io
instead of importing again from io (lgtm suggestion)
2019-03-02 21:19:57 +01:00
Jon Dufresne
9296e4f3a2 Merge multiple isinstance() calls to one 2019-03-02 08:24:08 -08:00
Andrew Murray
57807e9ce2
Merge pull request #3624 from hugovk/rm-VERSION
Remove deprecated VERSION
2019-03-02 11:47:59 +11:00
Hugo
df6d429789
Merge pull request #3580 from jdufresne/bytes-warning
Fix 'BytesWarning: Comparison between bytes and string' in PdfDict
2019-02-27 23:38:45 +02: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
b75210d824
Merge pull request #3572 from jdufresne/seek-constants
Replace .seek() magic numbers with io.SEEK_* constants
2019-02-27 23:30:27 +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
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
Hugo
d167f9e0bd
Merge pull request #3669 from radarhere/typo
Fixed typo
2019-02-21 18:24:15 +02: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
Hugo
cf08e21141
Merge pull request #3667 from radarhere/tifftags
Use constants for TIFF tag types
2019-02-20 22:29:21 +02:00
Hugo
78b7038a9b
Merge pull request #3555 from cgohlke/patch-1
Add TIFF compression codecs: LZMA, Zstd, WebP
2019-02-20 11:51:33 +02: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
dbc476255e Fixed typo 2019-02-19 19:49:50 +11:00
Andrew Murray
9e52fb0fe4 Use constants for tag types 2019-02-19 19:45:53 +11:00
Andrew Murray
daa8b51339
Merge pull request #3630 from jdufresne/simplify-eq
Slightly simplify Image.__eq__
2019-02-16 14:03:48 +11:00
Adrien CLERC
4a87e067a2 convert Jpeg to Mpo instead of re-reading everything 2019-02-15 22:08:31 +01:00
Adrien CLERC
ac5dd15e16 create static method to transform a Jpeg into an Mpo
This is dirty "downcasting". It just works in this special case.
2019-02-15 22:08:14 +01:00
Adrien CLERC
3a7e2e259a split _open in two parts 2019-02-15 22:07:11 +01: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
4ccdbf25cf
Merge pull request #3584 from radarhere/ifd_offset
Seek to IFD offset
2019-02-12 18:10:25 +02:00
Hugo
f7134f1c18
Merge pull request #3628 from jdufresne/dep-plugin-version
Deprecate PIL.*ImagePlugin.__version__ attributes
2019-02-12 15:39:43 +02:00
Andrew Murray
54f6cc7ea2 Changed subprocess stdout from devnull to None 2019-02-06 19:07:53 +11:00
Andrew Murray
d1df192e81 Renamed "file" variable to "fp" 2019-02-05 20:30:44 +11:00
Jon Dufresne
dd1e7ccc4a Slightly simplify Image.__eq__
Two identical types can be compared using the `is` operator. Object
identity is slightly faster than a string comparison as well.
2019-02-03 07:13:28 -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
d0fa318c01
Merge pull request #3611 from radarhere/eps
Changed EPS subprocess stdin from devnull to None
2019-02-03 11:50:47 +02:00
Hugo
b20cbe5299
Merge pull request #3609 from cgohlke/patch-2
Fix possible integer overflow
2019-02-03 11:49:35 +02:00
Hugo
4d1a459fa7
Merge pull request #3574 from jdufresne/base-exc
Catch BaseException for resource cleanup handlers
2019-02-03 11:35:44 +02:00
Andrew Murray
fbaf87ae03 Replaced strings with docstrings 2019-02-03 15:58:24 +11:00
Jon Dufresne
a11fed32b3 Deprecate PIL.*ImagePlugin.__version__ attributes
Use PIL.__version__ instead.
2019-02-02 17:39:55 -08:00
Hugo
3513c82a73 Use Pillow version instead of forked PIL version 2019-01-30 15:46:14 +02:00
Hugo
158d99b8b0 Remove deprecated VERSION 2019-01-30 15:46:14 +02:00
Hugo
6d0e4a838f Flake8: Fix F821 undefined name; to prevent introducting Mypy depedency 2019-01-30 11:54:12 +02: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
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
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
80f69ad32e Convert tabs to spaces 2019-01-28 15:40:19 +02:00
Andrew Murray
4ac6bbd073 Changed version to 6.0.0 2019-01-27 14:59:51 +11:00
Hugo
1b91ae361d
Merge pull request #3599 from hugovk/rm-deprecated-imageops
Remove deprecated ImageOps functions
2019-01-26 19:48:17 +02:00
cgohlke
86afcfd8f9
Fix possible integer overflow 2019-01-25 15:11:22 -08:00
Andrew Murray
258ec6d129 Changed subprocess stdin from devnull to None 2019-01-25 18:49:10 +11:00
Hugo
b41ffe585b Remove deprecated ImageOps functions 2019-01-19 20:00:55 +02:00
Hugo
dbbe463326 Remove deprecated PIL.OleFileIO in favour of olefile Python package 2019-01-19 17:59:17 +02:00
Andrew Murray
0481d0ac1e Seek to IFD offset 2019-01-16 06:55:37 +11:00
Jon Dufresne
c41ec5b115 Fix 'BytesWarning: Comparison between bytes and string' in PdfDict
When bytes warnings are enabled with the '-b' argument, the PdfDict
class would emit a warning.
https://docs.python.org/3/using/cmdline.html#miscellaneous-options

> -b
>
> Issue a warning when comparing bytes or bytearray with str or bytes
> with int.

Object attributes are always type str, so can safely encode them without
a type check. Observe:

    $ python3
    >>> o = object()
    >>> setattr(o, b'foo', b'bar')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: attribute name must be string, not 'bytes'
2019-01-13 09:38:13 -08:00
Jon Dufresne
51e95f6252 Catch BaseException for resource cleanup handlers
In the event of a SystemExit or KeyboardInterrupt, file resources should
still be cleaned up before re-raising the exception.

https://docs.python.org/3/library/exceptions.html#exception-hierarchy
2019-01-12 18:32:14 -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
a00fc33c04 Replace .seek() magic numbers with io.SEEK_* constants
A bit more readable.

https://docs.python.org/3/library/io.html#io.IOBase.seek
2019-01-12 18:22:07 -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
Jon Dufresne
0ae7b3374e Use bool type for ImageCms inPlace argument (instead of int)
The argument is used as a bool and the docs describe it as a bool, so
use an actual bool.
2019-01-07 20:22:52 -08:00
Andrew Murray
4e0a73b4fa Allow for unknown PNG chunks after image data 2019-01-08 07:21:25 +11:00
cgohlke
c0f4382af2
Add TIFF compression codecs: LZMA, Zstd, WebP 2019-01-06 19:49:00 -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
0f09274690 Remove more unused hashtable functions 2019-01-05 22:26:35 +02:00
Andrew Murray
4c0e32ccf2 Improved get_format_mimetype logic 2019-01-06 07:00:00 +11:00
Hugo
f0778ba594 Remove unused hashtable destroy functions 2019-01-05 21:07:11 +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
Andrew Murray
f8df6d1687 Fixed pickling of iTXt class with protocol > 1 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
Hugo
e32e3fdbeb 5.5.0.dev0 version bump 2019-01-01 20:26:53 +02:00
Hugo
0be809ddb3 5.4.0 version bump 2019-01-01 12:31:45 +02:00
Hugo
398d2f0c15
Merge pull request #3522 from radarhere/imagechops
Improved ImageChops documentation
2019-01-01 12:21:28 +02:00
Hugo
6b5aa006b2
Merge pull request #3519 from radarhere/putpixel
Allow RGB and RGBA values for P image putpixel
2019-01-01 11:46:30 +02:00
Andrew Murray
ff61119f9f Changed docstring to be consistent 2019-01-01 20:44:04 +11:00
Hugo
2de101e02c
Apply suggestions from code review
Changed docstrings to be consistent

Co-Authored-By: radarhere <3112309+radarhere@users.noreply.github.com>
2019-01-01 20:42:23 +11:00
Andrew Murray
aa8f30eae8 Several methods require at least one mode 1 image 2019-01-01 14:14:22 +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
bc3925ead5 Fixed writing to temporary file 2018-12-31 08:27:07 +11:00
Hugo
454fdd7800
Merge pull request #3501 from pirate486743186/patch-2
Add APNG extension to PNG plugin
2018-12-29 16:55:07 +02:00
Andrew Murray
6ead422e91 Added custom string TIFF tags 2018-12-29 16:14:52 +11:00
Andrew Murray
952de2ec4c Use constants for tag types 2018-12-29 16:14:29 +11:00
Andrew Murray
5edeca28b6 Corrected docstring 2018-12-28 07:14:44 +11:00
Andrew Murray
21268c87b3
Merge branch 'master' into patch-2 2018-12-27 17:39:40 +11:00
Andrew Murray
acc2c150f6 Added APNG mime type 2018-12-27 11:19:40 +11:00
Andrew Murray
09e94e40a1 Handle APNG chunks 2018-12-27 10:53:16 +11:00
pirate486743186
8d0b7e6b57 adding apng extension for png 2018-12-26 21:14:27 +01:00
Hugo
a43b8bac1e
Merge pull request #3506 from radarhere/png
Read textual chunks located after IDAT chunks for PNG
2018-12-26 13:34:50 +02:00
Hugo
14b1321c42
Merge pull request #3503 from Glandos/patch-2
Don't try to hash value if enum is empty
2018-12-26 13:32:18 +02:00
Hugo
78bc4da131
Merge pull request #3350 from radarhere/custom_tags
Added custom int and float TIFF tags
2018-12-26 13:07:46 +02:00
Hugo
55e5b7de6c
Merge pull request #3393 from frenzymadness/CWE_fixes_master
Fixes for issues reported by static code analysis
2018-12-26 13:02:19 +02:00
Hugo
bbb3be9a9d
Merge pull request #3187 from radarhere/encoderinfo
Wait until mode is normalized to copy im.info into encoderinfo
2018-12-26 12:56:50 +02:00
Andrew Murray
22837c37e2 Read textual chunks located after IDAT chunks 2018-12-24 23:58:19 +11:00
Glandos
0b8b3e679a
Add code comment 2018-12-22 15:29:31 +01:00
Glandos
e37b3fb7d3
don't try to hash value if enum is empty
Very few tags have an enum, and for those who don't, computing the hash value can be very expensive, e.g. instances of `fractions.Fraction` as mentioned in [the source](https://github.com/python/cpython/blob/master/Lib/fractions.py#L543).
2018-12-20 16:07:03 +01:00
Hugo
69837baba2
Merge pull request #3490 from radarhere/open_files
Updated open files documentation
2018-12-13 21:14:22 +02:00
Hugo
3ed5dcc928
Merge pull request #3467 from hugovk/lint-can-fail
CI: Allow lint job to fail
2018-12-13 21:09:58 +02:00
Hugo
961fecb35c
Merge pull request #3261 from radarhere/fp
Resolve __fp when closing and deleting
2018-12-13 21:09:23 +02:00
Hugo
857b077f5c
Merge pull request #3461 from radarhere/exclusive_fp
Close exclusive fp before discarding
2018-12-13 21:07:32 +02:00
Andrew Murray
233915bf9d Updated strings 2018-12-13 19:19:45 +11:00
Andrew Murray
49b23157c4 Include header 2018-12-13 19:18:17 +11:00
Hugo
0635e38514
Updated list syntax
Co-Authored-By: radarhere <3112309+radarhere@users.noreply.github.com>
2018-12-13 00:28:26 +11:00
Andrew Murray
7172a44caa Added libjpegturbo to check_feature 2018-12-12 21:25:05 +11:00
Andrew Murray
91f727051b Updated open files documentation 2018-12-11 14:39:10 +11:00
Konstantin Kopachev
e91b851fdc
Add reading old-JPEG compressed TIFFs
Old-style JPEG compression in TIFFs are able to be read using Strip/Tile APIs. Although, it should be possible to read them using Scanline API, it does not work for some reason.  Anyway, reading subsampled YCbCr formats through Strip/Tile/Scanline libtiff API does not de-subsample the data, so caller should unpack data to whatever format is appropriate.  New-style JPEG compressed images were already read through libtiff as RGB images (https://github.com/python-pillow/Pillow/pull/3227). Unfortunately, there is no flag to ask libtiff to de-subsample old jpeg, but it provides a way to read any image as 32bit RGBA.  This commit adds ability to read old-style JPEG TIFFs through reading *all* YCbCr images as RGBX using Tile and Strip reading API. This supersedes previous work (PR #3227) to read new-style JPEG-TIFFs.
2018-12-10 10:07:41 -08:00
Andrew Murray
ad26f53bf6 Updated comments 2018-12-05 18:19:00 +11:00
Hugo
ffa4932ed0 noqa a pair of ambiguous variable names 2018-12-04 23:25:28 +02:00
Hugo
c353225851 Prefer 'except Exception:' to bare 'except:' 2018-12-04 23:25:28 +02:00
Hugo
c75910dbc3 noqa some Py2/3 compat lines and others 2018-12-04 23:25:27 +02:00
Hugo
f3c1f08f5b noqa the few remaining long and hard-to-split lines 2018-12-04 23:25:27 +02:00
Hugo
231604e921
Merge pull request #3471 from radarhere/background
Change color table index background to tuple when saving as WebP
2018-12-04 23:22:53 +02:00
Hugo
a4fccd3dde
Merge pull request #3479 from radarhere/gif_extension
Allow arbitrary number of comment extension subblocks
2018-12-04 23:09:59 +02:00
Hugo
0c2e4840f2
Merge pull request #3478 from radarhere/fli
Ensure previous FLI frame is loaded before seeking to the next
2018-12-04 22:51:54 +02:00
Hugo
5c16528fdf
Merge pull request #3450 from radarhere/imageshow
ImageShow improvements
2018-12-04 22:47:28 +02:00
Andrew Murray
b2b737b68b Allow arbitrary number of comment extension subblocks 2018-11-27 21:11:22 +11:00
Andrew Murray
f1b2802eb1 Resolved error for comment extension with zero subblocks 2018-11-27 21:09:28 +11:00
Andrew Murray
2f7f945c84 Ensure previous FLI frame is loaded before seeking to the next 2018-11-26 18:52:51 +11:00
Andrew Murray
6c126ca282 Change color table index background to tuple when saving 2018-11-20 19:50:14 +11:00
Andrew Murray
84df069169 Use im.info background when saving 2018-11-20 18:50:00 +11:00
Andrew Murray
47775f3d50 Resolve __fp when closing and deleting 2018-11-17 21:56:06 +11:00
Andrew Murray
61397de88b Check quality_layers type 2018-11-16 23:31:42 +11:00
Andrew Murray
b637b5f7a2 Close exclusive fp before discarding 2018-11-13 22:13:55 +11:00
Andrew Murray
fea3dafd05 Supply filename through stdin instead of inline in Mac and Unix ImageShow viewers 2018-11-12 19:33:57 +11:00
Andrew Murray
a0be7b09cc Added UnixViewer get_command 2018-11-12 19:33:57 +11:00
Andrew Murray
d8e66c1882 Moved variable declaration and execution 2018-11-12 06:14:04 +11:00
Hugo
8d6347ab72 Changed array size to be arbitrary
Co-Authored-By: radarhere <radarhere@gmail.com>
2018-11-12 06:14:04 +11:00
Hugo
207ed04d87 Removed hardcoded array size
Co-Authored-By: radarhere <radarhere@gmail.com>
2018-11-12 06:14:04 +11:00
Andrew Murray
ddf8593e7b Do not write custom tags with libtiff < 4 2018-11-12 06:14:04 +11:00
Andrew Murray
a3d45e9cef Added custom int and float TIFF tags 2018-11-12 06:14:04 +11:00
Hugo
ceebfc6fe8 flake8: E501 line too long 2018-11-11 19:01:11 +02:00
Hugo
7d625940ae flake8: E131 continuation line unaligned for hanging indent 2018-11-11 19:01:11 +02:00
Hugo
94c94eb1f7 flake8: E128 continuation line under-indented for visual indent 2018-11-11 19:01:11 +02:00
Hugo
a3079eab9e flake8: E127 continuation line over-indented for visual indent 2018-11-11 19:01:10 +02:00
Hugo
0b7910c7cd flake8: E402 module level import not at top of file 2018-11-11 19:01:10 +02:00
Hugo
91da8ff31d flake8: F401 imported but unused 2018-11-11 19:01:10 +02:00
Hugo
eb9aee7048 flake8: F841 local variable is assigned to but never used 2018-11-11 19:01:10 +02:00
Andrew Murray
e3220c0f4d Changed capitalisation 2018-11-11 16:00:48 +11:00
Hugo
5288cf63c9 Changed capitalisation
Co-Authored-By: radarhere <3112309+radarhere@users.noreply.github.com>
2018-11-11 16:00:40 +11:00
Andrew Murray
52c175d1bc Added context manager, __del__ and close methods 2018-11-11 16:00:17 +11:00