Commit Graph

1615 Commits

Author SHA1 Message Date
Andrew Murray
4dd7b94338 Return copy on Image crop if crop dimensions match Image dimensions 2017-03-31 13:02:56 +11:00
wiredfool
977f319234 Merge pull request #2449 from hugovk/dpi-from-exif
If DPI isn't in JPEG header, fetch from EXIF
2017-03-29 21:24:46 +01:00
wiredfool
9e2653c155 Merge pull request #2455 from cgohlke/patch-1
Remove superfluous import of FixTk
2017-03-22 21:18:27 +00:00
Christoph Gohlke
c6dc1f2878 Fix import of tkinter/Tkinter
Do not try to import the `tkinter` module on Python 2.x. `tkinter` is part of the `tkinter3000` package (Widget Construction Kit for Tkinter).
2017-03-22 10:32:42 -07:00
Christoph Gohlke
140c4b54c0 Remove superfluous import of FixTk
The `_imaging` module does not link against libtcl/libtk.
`FixTk` is imported by `import Tkinter` if necessary.
The `FixTk` module is for Python 2.x on Windows only.
2017-03-22 10:15:29 -07:00
wiredfool
b69b70198f Closing only single frame TIFF images 2017-03-14 23:17:22 +00:00
Hugo
07a9620959 If DPI isn't in JPEG header, fetch from EXIF 2017-03-14 11:49:10 +02:00
Hugo
b7d14b04b6 Test MicImagePlugin for correctness 2017-03-13 08:18:13 +02:00
homm
58484db509 close files after loading for some file types 2017-03-12 20:05:20 +00:00
homm
091d0c400c close fp if it was opened in ImageFile constructor 2017-03-12 20:05:20 +00:00
homm
88ec0bb52f close file in case of failures 2017-03-12 20:05:20 +00:00
wiredfool
c9f54c98a5 Merge pull request #1938 from wiredfool/python-decoder
Pure Python Decoders - fix for MSP decoding
2017-03-12 17:20:19 +00:00
wiredfool
31c1a651a3 fixed wording 2017-03-11 16:30:04 +00:00
wiredfool
40a94d4a42 Propagage ValueError out, rather than swallowing 2017-03-11 15:34:43 +00:00
wiredfool
38f43c1e5f review lint 2017-03-11 13:50:19 +00:00
wiredfool
c2cd5fe3d1 handles_eof was removed in 4.0 2017-03-11 13:50:19 +00:00
wiredfool
b668db33cd Updated versionadded to reflect 6-9 month slip [ci skip] 2017-03-11 13:50:19 +00:00
wiredfool
f13b335a60 Py2.7 compatibility 2017-03-11 13:50:19 +00:00
wiredfool
949932f45f Pure Python MSP Decoder 2017-03-11 13:50:19 +00:00
hugovk
e44773c76c Test with bad checksum 2017-03-11 13:50:19 +00:00
wiredfool
1c0d1c547e PyDecoder documentation 2017-03-11 13:50:19 +00:00
wiredfool
25bc5c76ab Pure python decoder registry 2017-03-11 13:50:19 +00:00
wiredfool
1428e4140a Test for identical handling of getheader/getdata 2017-03-08 01:35:15 -08:00
wiredfool
676d0c3b3b Can't use objects in default args 2017-03-08 01:35:15 -08:00
wiredfool
51b46e00c2 Refactor out passed in palette handling, add ImagePalette as an option, document palette format 2017-03-08 01:35:15 -08:00
wiredfool
f6b22bf0ab moved normalise_ functions together 2017-03-08 01:35:15 -08:00
wiredfool
abb7b7342e Added function docstring 2017-03-08 01:35:15 -08:00
wiredfool
770c423181 Regroup methods, add docstring comments 2017-03-08 01:35:15 -08:00
wiredfool
46287eb62a Renamed _get_local_header to _write_local_header 2017-03-08 01:35:15 -08:00
Andrew Murray
ab7e07c54d Added comment that getdata is legacy 2017-03-08 01:35:15 -08:00
wiredfool
aea2a4ca8d legacy getheader mutates the image 2017-03-08 01:35:14 -08:00
wiredfool
872bce552f Docstring Comments on methods 2017-03-08 01:35:14 -08:00
wiredfool
f5e836b442 removed extra param from _get_global_header 2017-03-08 01:35:14 -08:00
wiredfool
321c6165c9 removed extra params from _get_palette_bytes 2017-03-08 01:35:14 -08:00
wiredfool
b315b6ecf3 Don't requantize 'P' images 2017-03-08 01:35:14 -08:00
wiredfool
26e145c8a3 Refactor _convert_mode -> _normalize_mode 2017-03-08 01:34:31 -08:00
wiredfool
b9618b3ce7 Encoderinfo fix 2017-03-08 19:41:18 +11:00
wiredfool
cee397ab00 Refactor get_palette to do one thing, and not mutate the image in place 2017-03-08 19:41:18 +11:00
wiredfool
1e9afb3ecb Refactor out the palette remapping to Image.Image 2017-03-08 19:41:18 +11:00
wiredfool
24285fdc28 Remove support for PIL plus external encoder 2017-03-08 19:41:18 +11:00
Andrew Murray
87a14ce6de Created _write_single_frame and _write_multiple_frames from _save 2017-03-08 19:41:18 +11:00
Andrew Murray
d45f1d835b Removed second return value from _get_palette_bytes 2017-03-08 19:41:18 +11:00
Andrew Murray
26cfa8cc62 Extracted core of getheader into _get_global_header 2017-03-08 19:41:18 +11:00
Andrew Murray
a43295c3dd Extracted core of getdata into _write_frame_data 2017-03-08 19:41:18 +11:00
Andrew Murray
af57ff8d45 Simplified code 2017-03-08 19:41:18 +11:00
Andrew Murray
b06669f670 Resolved GifImagePlugin FIXME 2017-03-08 19:41:18 +11:00
Andrew Murray
f28084ae3e Removed unnecessary copy operation 2017-03-08 19:41:18 +11:00
Andrew Murray
ce87310026 Merged _get_used_palette_colors into _get_optimize 2017-03-08 19:41:18 +11:00
Andrew Murray
4df1305073 Only call _get_used_palette_colors when necessary 2017-03-08 19:41:18 +11:00
Andrew Murray
bf0b4cf279 Minor code cleanup in GifImagePlugin 2017-03-08 19:41:18 +11:00
Andrew Murray
562458cdd3 Added _save_netpbm comment 2017-03-08 19:41:18 +11:00
wiredfool
9f88a55fa3 Merge pull request #2442 from hugovk/test-xvthumb
Test XVThumbImagePlugin for correctness
2017-03-06 18:53:58 +00:00
wiredfool
1a8f88986d Merge pull request #2441 from hugovk/test-bufrstub
Test BufrStubImagePlugin for correctness
2017-03-06 18:53:13 +00:00
hugovk
94c07f68fb Python 3 fix 2017-03-04 23:28:08 +02:00
hugovk
5cf56e796f Refactor to reuse _accept 2017-03-04 20:03:34 +02:00
hugovk
a0f50d7305 Get integers, not single-item lists of integers 2017-03-04 19:58:49 +02:00
hugovk
277d8123a4 Only need to read 4 bytes 2017-03-04 16:39:03 +02:00
hugovk
4ece1ae78a Python 3 fix 2017-03-04 13:52:14 +02:00
wiredfool
5071ea2a0e Merge pull request #2425 from radarhere/tests
Added tests
2017-03-03 15:44:33 +00:00
Andrew Murray
7467d1e010 Changed comment to be 80 characters or less 2017-03-03 21:57:30 +11:00
Andrew Murray
798fde57ca Removed unused imports 2017-03-03 21:38:19 +11:00
Andrew Murray
0b93853fd8 Removed duplicate imports 2017-03-03 21:38:19 +11:00
Andrew Murray
bef530cb09 Changed None comparison to is 2017-03-03 21:38:19 +11:00
Andrew Murray
257bc8bd4f Added tests 2017-03-03 19:45:55 +11:00
Andrew Murray
d92b1678fe Corrected ImageDraw floodfill exception type 2017-03-03 19:45:55 +11:00
Hugo
49815f8d4a Test pixar for similarity 2017-02-28 08:27:53 +02:00
Hugo
cb34b686a5 Merge pull request #1822 from radarhere/unused
Remove unused imports
2017-02-26 10:05:19 +02:00
Andrew Murray
f9a99652e4 Replaced KeyError catch with dictionary get method 2017-02-25 13:49:05 +11:00
wiredfool
0ee223aa7a Merge pull request #1390 from radarhere/deprecated_27
Removed use of spaces in TIFF kwargs, deprecated in 2.7
2017-02-22 10:13:45 +00:00
wiredfool
a4ef743b0f Merge pull request #2220 from jdufresne/image-draw-dep
Remove long deprecated ImageDraw methods
2017-02-22 10:12:05 +00:00
wiredfool
8421a076ac Merge pull request #2253 from jdufresne/devnull
Send unwanted subprocess output to /dev/null
2017-02-22 10:10:03 +00:00
hugovk
0764b2b5e9 Update error message 2017-02-22 08:20:45 +02:00
Andrew Murray
16c8b01026 Replaced broken URL with web.archive.org URL 2017-02-18 15:53:01 +11:00
Andrew Murray
c2cfd8e7e4 Changed http URL to https 2017-02-18 15:44:22 +11:00
wiredfool
f0cebebf32 Clarify that draft is only implemented for JPEG and PCD 2017-02-17 06:22:40 -08:00
ces42
8fb44a2bee More explicit error message when saving to a file with invalid extension (#2399)
* more explicit error message when saving to a file with invalid extension + test
2017-02-17 13:39:16 +00:00
Leonid Bloch
28b818974e Allow to save tiff stacks from separate images
This is a quick solution that will allow to save tiff stacks from
separate images, e.g. from Numpy arrays.
Previously, tiff stacks could be saved only from multiframe images.
This behavior is similar to what is possible now with GIFs.

Note however, that for correct results, all the appended images should
have the same encoder{info,config} properties.

Example:

import numpy as np
from PIL import Image
a = np.ones((100,100,100), dtype=np.uint8)
imlist = []
for m in a:
    imlist.append(Image.fromarray(m))

imlist[0].save("test.tif", compression="tiff_deflate", save_all=True,
               append_images=imlist[1:])

(Should result in a 100-frame, 100x100 tiff stack.)

Signed-off-by: Leonid Bloch <leonid.bloch@esrf.fr>
2017-02-17 00:57:00 +02:00
Hugo
53e5702557 Update http to https 2017-02-14 11:27:02 +02:00
hugovk
07af06bf8c Expose and test radial_gradient 2017-01-29 18:44:24 +02:00
hugovk
3ead178d18 flake8 2017-01-29 18:38:06 +02:00
hugovk
47b1c66961 Expose and test linear_gradient 2017-01-29 18:17:31 +02:00
Jon Dufresne
cecdb2af61 Send unwanted subprocess output to /dev/null
Avoids unnecessary creation of temporary files as well as unnecessarily
storing process output in memory. The temporary files would sometimes
remain and not be cleaned up.
2017-01-26 17:31:29 -08:00
wiredfool
2df28a6601 Merge pull request #2347 from radarhere/icc_profile
Moved iCCP chunk before PLTE chunk when saving as PNG
2017-01-26 14:26:25 +00:00
wiredfool
a62f2c5b44 Merge pull request #2365 from SemanticsOS/lambdafu/dpiresolution
Default to inch-interpretation for missing ResolutionUnit in TiffImagePlugin
2017-01-26 14:22:32 +00:00
wiredfool
a71ba1a1c6 comments 2017-01-26 05:55:18 -08:00
wiredfool
a69c37738a Look in a different location for the tk intepreter on pypy fixes #2376 2017-01-26 05:32:40 -08:00
Andrew Murray
f0480de118 Restricted PNG encoderinfo chunks to valid values when saving 2017-01-21 16:57:03 +11:00
Andrew Murray
361f579579 Moved iCCP chunk before PLTE chunk when saving as PNG 2017-01-21 13:32:22 +11:00
Marcus Brinkmann
8a9bd2cdcd Default to inch-interpretation for missing ResolutionUnit in TiffImagePlugin. 2017-01-19 17:24:28 +01:00
Alexandru Chirila
b001e5d4ab Ensure that the err_code variable is initialized before using. 2017-01-18 14:22:14 +02:00
Andrew Murray
c168f01111 Removed imports used only by comments 2017-01-18 20:06:47 +11:00
Andrew Murray
97a2d42dac Removed unused print_function imports 2017-01-18 20:06:21 +11:00
Andrew Murray
58b5c9187d Replaced absolute PIL imports with relative imports (#2349) 2017-01-17 13:22:18 +00:00
wiredfool
c1b510c72c Merge pull request #2307 from radarhere/contextmanagers
Added context managers
2017-01-17 13:20:41 +00:00
wiredfool
f6dd290560 Merge pull request #2343 from radarhere/registered_extensions
Expose registered file extensions in Image
2017-01-16 11:40:02 +00:00
Jarkko Pöyry
3bdd15e55e Make mode descriptor cache initialization thread-safe.
Initializing mode descriptor cache in-place is racy and may cause a thread to
observe a partially constructed cache if another thread is pre-empted while
it's still constructing the cache. In this change, the mode descriptor cache is
constructed into a local variable instead and then set globally in a single
atomic operation, preventing any possibility of observing an incomplete cache.
2017-01-10 23:49:29 +02:00
Luis G
67c1258cfc Expose registered file extensions
This adds a new method in Image (registered_extensions) that exposes the
internal EXTENSION dictionary to consumers of the library
2017-01-07 11:32:16 +11:00
Andrew Murray
1fb00976f5 Removed TODO resolved in #1121 2017-01-07 10:14:49 +11:00
Jerome Leclanche
3ac9ab6fa2 Remove an unnecessary import 2017-01-07 08:12:33 +11:00
wiredfool
296fb5fe1d 4.1.0.dev0 version bump 2017-01-02 04:06:48 -08:00