wiredfool
4f1bab5c1b
current version
2017-05-10 03:48:47 -07:00
wiredfool
8999ccb570
single version for build
2017-05-10 03:47:02 -07:00
Andrew Murray
37b293f593
Flake8 fixes
2017-04-20 21:14:23 +10:00
wiredfool
17f799ed16
Merge pull request #2484 from hugovk/exif-resolution-as-int
...
Fix for file with DPI in EXIF but not metadata, and XResolution is an int rather than tuple
2017-04-19 12:10:44 +01:00
wiredfool
df616d2b16
Merge pull request #2471 from radarhere/crop
...
Return copy on Image crop if crop dimensions match the image
2017-04-19 11:46:07 +01:00
wiredfool
2ac4f79e8c
4.2.0.pre0 version bump
2017-04-19 03:02:45 -07:00
Hugo
8b06fa9a21
Fix for file with DPI in EXIF but not metadata, and XResolution is an int rather than tuple
2017-04-11 14:07:31 +03:00
wiredfool
38eff74004
4.1.0 version bump
2017-04-04 11:10:22 -07:00
wiredfool
0834e9491e
Merge pull request #2330 from wiredfool/pr_2032
...
Close files after loading when possible.
2017-04-03 23:32:06 +01:00
Hugo
53df62647a
DPI is a tuple ( #2472 )
...
* DPI is a tuple
* Some EXIF only contains an X resolution for DPI
* Refactor
* Test with no DPI in EXIF
* Handle EXIF with no DPI
* Created with: exiftool "-*resolution*"= photoshop-200dpi.jpg
* Test when not in EXIF, DPI==72,72
* Use X resolution for Y, default to 72,72 dpi
* Created with: exiftool -exif:ResolutionUnit=cm photoshop-200dpi.jpg
* Test for EXIF with dpcm instead of dpi
* Convert dpcm to dpi, and default to inches if unit unknown
2017-04-03 23:28:33 +01:00
wiredfool
06b61f4e5b
close the mmap when closing the image #2194
2017-04-03 08:06:59 -07:00
wiredfool
86c1704646
add _close_exclusive_fp_after_load flag
2017-04-03 08:06:58 -07:00
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
wiredfool
a021d4978d
4.0.0 version bump
2017-01-01 20:20:06 +00:00
wiredfool
ccccd725af
Merge pull request #2329 from wiredfool/pcd_hack_refactor
...
Refactor out postprocessing hack to load_end in PcdImageFile
2017-01-01 19:07:23 +00:00
wiredfool
599ec6bcd6
Removed #hack
2017-01-01 12:59:48 +00:00
wiredfool
8dd19e6c33
refactor out postprocessing hack to load_end in PcdImageFile
2017-01-01 12:04:59 +00:00
wiredfool
fed4b52171
Disable fastpath when using center or translate
2017-01-01 11:13:25 +00:00
wiredfool
f286d8bb34
Documentation param order to match actual order
2017-01-01 11:10:39 +00:00
Marcus Brinkmann
90077b3975
Add center and translate option to Image.rotate.
2016-12-31 19:01:09 +00:00
wiredfool
c7df6287fa
Merge pull request #2262 from wiredfool/zero_size
...
Allow 0 size images, Fixes #2259
2016-12-31 16:35:14 +00:00
wiredfool
69bea50810
Allow 0 size images, Fixes #2259
2016-12-31 13:19:29 +00:00
wiredfool
31c204eae4
Loop cleanup, python 3 compatibility
2016-12-31 12:29:10 +00:00
Mickael B
597ab45d4d
[SGI] Save uncompressed SGI/BW/RGB/RGBA files
...
Save feature added to SgiImagePlugin.py, uncompressed method only
2016-12-31 12:29:10 +00:00
Andrew Murray
a06dd59df7
Added context managers
2016-12-28 09:54:10 +11:00
wiredfool
944a470a79
Merge pull request #2312 from wiredfool/pr_2298
...
List of individual frame durations for saving animated gifs. #2298
2016-12-27 12:00:40 +00:00
wiredfool
f36a04570f
Merge pull request #2313 from wiredfool/pr_2196
...
Unified different GIF optimize conditions #2196 , Test for #2196
2016-12-27 11:53:50 +00:00
wiredfool
e530f2a228
Added tuple option for durations
2016-12-27 03:04:37 -08:00
wiredfool
87092ad4f8
can pass list of integer to set different duration for each frame when saving GIF
2016-12-27 02:44:05 -08:00
Andrew Murray
8c2a857c2e
Removed shebang line from OleFileIO
2016-12-25 20:18:50 +01:00
Jakub Wilk
8524c18329
Remove executable bit from OleFileIO.py
2016-12-25 12:05:38 +01:00
wiredfool
80b78be21a
Merge pull request #2199 from jdufresne/dep-olefile
...
Remove vendored version of olefile Python package in favor of upstream
2016-12-13 20:12:29 +00:00
wiredfool
55f7a736a4
Merge pull request #2234 from radarhere/print
...
Updated comments to use print as a function
2016-12-13 20:00:25 +00:00
wiredfool
ba5f9b88da
Merge pull request #2223 from wiredfool/handles_eof
...
Removed the handles_eof flag in the decoder, as there are no users of it
2016-12-13 19:48:55 +00:00
Andrew Murray
41e492b026
Removed use of spaces in TIFF kwargs, deprecated in 2.7
2016-12-09 20:44:42 +11:00
Hugo
837d583b15
Merge pull request #2275 from wiredfool/issue_2272
...
Update Maxblock heuristic (fixes #2272 )
2016-12-04 21:38:22 +02:00
wiredfool
7e2bd28a7c
Fix for issue 2272, CMYK images miss the heuristic for the maxblock buffer scaling
2016-12-03 14:45:45 +00:00
wiredfool
86606022c5
Merge pull request #2193 from SemanticsOS/lambdafu/libtiff-icc
...
Update info.icc_profile when using libtiff reader.
2016-12-03 13:44:26 +00:00
homm
77210e410d
test for common modes and filters
...
pass box for RGBA → RGBa conversion
2016-12-02 16:33:48 +03:00
homm
295382aadc
vertical and horizontal pass with boxes
2016-12-02 15:40:32 +03:00
homm
3d72e9828f
add param info
2016-12-02 03:11:02 +03:00
homm
6def4bfc73
roi → box
2016-11-30 20:01:28 +03:00
hugovk
adfda1a5a4
Python 3 compatibility
2016-11-30 16:50:44 +02:00
hugovk
880464f46c
Only save relevant sizes
2016-11-30 16:41:43 +02:00
hugovk
b341898c7f
Allow 256x256 sizes
2016-11-30 16:00:14 +02:00
hugovk
43fc9c9b59
flake8
2016-11-30 14:51:30 +02:00
hugovk
cc89d95f02
Fix saving 256x256 icons
2016-11-30 14:50:53 +02:00
wiredfool
e0b957240b
Merge pull request #2087 from cskau/patch-1
...
Fixes TIFFImagePlugin ICC color profile saving.
2016-11-29 19:33:52 +00:00
wiredfool
0271887115
Merge pull request #2256 from radarhere/imageops
...
Doc: Improved description of ImageOps.deform resample parameter
2016-11-27 16:28:03 +00:00
glexey
0116c9240e
EMF: support negative bounding box coordinates ( #2249 )
...
* EMF: support negative bounding box coordinates
Similar to placeable WMF, bounding box coordinates
should be interpreted as signed integer, otherwise
opening EMF file with negative (x0,y0) fails.
* Basic load tests for WMF and EMF formats
* WMF/WMF tests: just test open(), not load()
Not sure why load() fails on Debian build. Well, at least we can test
open().
* WMF/EMF: Unpack signed integers using unpack()
* WMF/EMF: Compare to reference PNG rendering
* EMF/WMF comparison: use assert_image_similar()
* Use similarity epsilon 0.5 for WMF, as vector rendering looks different across Windows platforms
* Trigger rebuild
2016-11-27 16:03:51 +00:00
Andrew Murray
14cfec0b49
Added decompression bomb check to WalImageFile
2016-11-26 11:50:56 +11:00