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
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
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
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
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
Andrew Murray
4c0e32ccf2
Improved get_format_mimetype logic
2019-01-06 07:00:00 +11: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
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
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
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
Andrew Murray
747eccbfc2
Close exclusive fp on open exception
2018-11-09 11:35:08 +11:00
Hugo
ed10276a6b
Merge pull request #3418 from radarhere/webp_fp
...
Only close existing fp in WebP if fp is exclusive
2018-10-31 09:16:53 +02:00
Hugo
e12aa375ec
Merge pull request #3406 from Nazime/negativeindex
...
Add negative index to PixelAccess
2018-10-27 23:27:15 +03:00
Hugo
4530f55c61
Merge pull request #3385 from radarhere/gif_background
...
Change tuple background to global color table index when saving as GIF
2018-10-24 22:34:40 +03:00
Andrew Murray
929f7397db
Line too long
2018-10-21 18:26:08 +11:00
Andrew Murray
ac20a02b7a
Do not use bare 'except'
2018-10-21 18:11:39 +11:00
Andrew Murray
f2d4d19cc4
Undefined name
2018-10-21 18:00:52 +11:00
Andrew Murray
ede35510c1
Continuation line over-indented for visual indent
2018-10-21 17:59:59 +11:00
Andrew Murray
d265757651
Continuation line unaligned for hanging indent
2018-10-21 17:59:51 +11:00
Andrew Murray
77f807cf73
Continuation line under-indented for visual indent
2018-10-21 17:59:27 +11:00
Andrew Murray
6099ddeef9
Expected 1 blank line before a nested definition
2018-10-21 17:59:18 +11:00
Andrew Murray
e84a78d828
Only close existing fp if fp is exclusive
2018-10-19 20:12:08 +11:00
Alexander Karpinsky
2222a581ab
Merge pull request #3409 from uploadcare/resize-from-box-in-fit
...
Optimise ImageOps.fit by combining resize and crop
2018-10-18 11:55:06 +03:00
Alexander Karpinsky
b8e7f646f3
Merge pull request #3415 from python-pillow/fix-webp-loading-from-blob
...
Quick fix: revert #3341 due to regression
2018-10-18 11:38:29 +03:00
Alexander
6cabcadae4
add release notes
2018-10-18 10:58:20 +03:00
Alexander
f8d4aa5882
Quick fix: revert #3341 due to regression
2018-10-18 10:19:11 +03:00
Alexander
73eec9000d
Optimise ImageOps.fit by combining resize in crop
2018-10-17 01:57:55 +03:00
Nazime
86324a842d
Add setting negative pixels and unittest
2018-10-15 12:51:24 +02:00
Nazime
468c405a47
Image pixels negative index
2018-10-14 16:12:58 +02:00
Andrew Murray
7edca01921
Minor documentation improvement [ci skip]
2018-10-11 19:36:50 +11:00
Erich Seifert
9807f1ad56
Fixed documentation on bilevel conversion
...
The cutoff when converting an image to bilevel (mode "1") is 128. This should resolve issue #3394 .
2018-10-05 01:11:24 +02:00
Andrew Murray
a7eb2ea9cc
Change tuple background to global color table index when saving
2018-10-02 20:52:07 +10:00
Andrew Murray
3437d5fcb4
5.4.0.dev0 version bump
2018-10-01 18:39:58 +10:00
Andrew Murray
0ac14725ef
5.3.0 version bump
2018-10-01 15:48:10 +10:00
Hugo
2fa54408d4
Merge pull request #3203 from radarhere/size
...
Changed Image size property to be read-only by default
2018-09-30 14:35:35 +03:00
Andrew Murray
2c11974b86
Fixed typo
2018-09-30 21:09:42 +10:00
Hugo
a0fda60662
Use snake_case
2018-09-30 15:34:33 +10:00
Andrew Murray
82d942c3d8
Added warnings if image file identification fails due to lack of support
2018-09-30 15:34:27 +10:00
Andrew Murray
6f44ae1d27
Only deprecate setting of TIFF image sizes
2018-09-30 15:08:35 +10:00
Andrew Murray
0adeb82e98
Changed Image size property to be read-only by default
2018-09-30 13:45:18 +10:00
Hugo
98caf40507
Merge pull request #3378 from hugovk/windows-gs-popup
...
Hide the Ghostscript progress dialog popup on Windows
2018-09-29 23:09:16 +03:00
Hugo
d36365f4fb
Merge pull request #3227 from kkopachev/master
...
Adding support to reading tiled and YcbCr jpeg tiffs through libtiff
2018-09-29 19:45:29 +03:00
Hugo
84b4905a94
Merge pull request #3310 from radarhere/compression
...
Fixed None as TIFF compression argument
2018-09-29 19:44:43 +03:00
Hugo
8458641bb8
Merge pull request #3324 from radarhere/info
...
Changed GIF seek to remove previous info items
2018-09-29 19:41:03 +03:00
Hugo
e2deb07608
Merge pull request #3274 from radarhere/pdf
...
Improve PDF document info
2018-09-29 17:43:05 +03:00
Hugo
e380481662
Merge pull request #3386 from radarhere/convert
...
Improved convert documentation
2018-09-29 16:48:08 +03:00
Andrew Murray
1e305380ae
Merge pull request #3094 from hugovk/add-width-to-shapes
...
Add line width parameter to rectangle and ellipse-based shapes
2018-09-29 23:21:03 +10:00
Andrew Murray
29bc4b2df4
Improved convert documentation [ci skip]
2018-09-29 20:14:56 +10:00
Andrew Murray
a8261a2e89
Line too long
2018-09-27 20:35:00 +10:00
Andrew Murray
f8fbac68de
Removed unused imports
2018-09-27 20:31:01 +10:00
Andrew Murray
9b0d4baa8c
Continuation line under-indented for visual indent
2018-09-27 20:31:01 +10:00
Konstantin Kopachev
69f315a585
PR feedback: simplified key construct for fillorder=2; indentation fixes
2018-09-26 09:44:45 -07:00
Hugo
a3f7ce5b73
Merge pull request #3313 from dinkolubina/fix-img-crop
...
Fix _crop and tests
2018-09-26 16:50:54 +03:00
Hugo
f29881fd60
Merge pull request #3377 from radarhere/color_diff
...
Added support to floodfill for non-RGB colors
2018-09-26 16:24:59 +03:00
Hugo
9e54c14dfa
Merge pull request #2214 from jdufresne/eps-text-wrapper
...
Use TextIOWrapper.detach() instead of NoCloseStream
2018-09-26 15:34:24 +03:00
Hugo
5a8c48c4f3
Merge pull request #3205 from radarhere/transparency
...
Added transparency to matrix conversion
2018-09-26 15:29:21 +03:00
Andrew Murray
b5af283732
Added support to floodfill for non-RGB colors
2018-09-26 22:22:17 +10:00
Hugo
ae415907cb
flake8 and tidy up
2018-09-26 14:38:44 +03:00
Hugo
f13c150f00
Hide the Ghostscript progress dialog on Windows
2018-09-26 14:38:33 +03:00
Hugo
78203606b7
Merge pull request #3364 from radarhere/contain
...
Added ImageOps pad method
2018-09-26 13:54:26 +03:00
Hugo
1b9a1c7ed7
Merge pull request #3279 from radarhere/pyside2
...
Added PySide2
2018-09-26 13:16:31 +03:00
Andrew Murray
b09b43d8b2
Added ImageOps pad method
2018-09-26 20:07:46 +10:00
Andrew Murray
0c37491201
Corrected tags
2018-09-23 17:22:16 +10:00
Hugo
ed4de6cb62
Fix docstring typo
...
If we `import numpy as np`, use `np` not `numpy`
2018-09-20 15:27:30 +03:00
Konstantin Kopachev
187782470b
Drop YCbCrX(XX) modes, as TIFF does not have to support that
2018-09-18 12:06:27 -07:00
Konstantin Kopachev
f874e6f058
Fix typo and add explanatory comment
2018-09-18 12:06:26 -07:00
Konstantin Kopachev
1e4b3177ed
Change comment wording to reflect ability to read tiled tiffs [ci skip]
2018-09-18 12:05:51 -07:00
Konstantin Kopachev
e6c510ef38
Remove redundant decompression; adjust jpeg read mode to be RGBX (pad)
2018-09-18 12:05:50 -07:00
Konstantin Kopachev
1f63abdba8
Fix tiled raw tiff read and add tests
2018-09-18 12:05:49 -07:00
Konstantin Kopachev
f0436a4ddc
Adding support to reading tiled and YcbCr jpegs tiffs through libtiff
2018-09-18 12:05:49 -07:00
Hugo
521ae77bb9
Merge pull request #3298 from kkopachev/webp-rgb
...
Read/save RGB webp as RGB (instead of RGBX)
2018-09-17 12:05:07 +03:00
Hugo
73c305d4d5
Merge pull request #3333 from jdufresne/debug-print
...
Clean up commented out debug print statements
2018-09-17 11:56:19 +03:00
Andrew Murray
f3842460ba
Added line joints
2018-09-16 21:29:09 +10:00
Andrew Murray
7b4040f991
Merge pull request #3294 from yo1995/perfperf-improv-ImageDraw-floodfill
...
Performance improvement of ImageDraw.floodfill()
2018-09-16 12:46:50 +10:00
Giovanni Cavallin
e5160bd373
From KeyError to ValueError when saving image
...
When saving an image, if the extension is not determined it raises a ValueError (while internally it manages a KeyError) so I propose this change
2018-09-11 19:32:47 +10:00
Andrew Murray
dd2698f00e
Merge pull request #3335 from uploadcare/more-tiff-modes
...
Add more raw Tiff modes (RGBaX, RGBaXX, RGBAX, RGBAXX)
2018-09-10 19:42:09 +10:00
Alexander
a95e57af46
Wrong raw mode for YCbCr with two extra channels
2018-09-08 18:21:02 +03:00
Andrew Murray
9d9da79caa
Close existing fp before setting new fp
2018-09-08 23:08:17 +10:00
Hugo
79552080ab
Merge pull request #3327 from radarhere/tga
...
Added orientation, compression and id_section as TGA save keyword arguments
2018-09-08 13:13:13 +03:00
Andrew Murray
a9d504e91d
Renamed idlen variable to id_len
2018-09-08 19:02:03 +10:00
Andrew Murray
325ca3cede
Trim id_section if it is greater than 255 characters
2018-09-08 08:26:32 +10:00
Andrew Murray
9e4c54e10f
Added orientation, compression and id_section as keyword arguments
2018-09-08 08:12:26 +10:00
Andrew Murray
0a44d58314
Convert int values of RATIONAL TIFF tags to floats
2018-09-07 20:35:55 +10:00
dinko
66207b47bc
fix _crop and tests
2018-09-05 21:00:35 +02:00
Hugo
fa14698e66
Merge pull request #3233 from hugovk/PYTHONOPTIMIZE
...
Fix code for PYTHONOPTIMIZE
2018-09-05 19:57:10 +03:00
Alexander Karpinsky
f7eb11cc3d
Merge branch 'master' into more-tiff-modes
2018-09-05 17:58:31 +03:00
Alexander
accc66fb5e
add support for RGBaXX and RGBaX raw tiff modes
2018-09-05 17:45:03 +03:00
Alexander
ad5cf0a0e2
Add RGBAX and RGBAXX tiff modes
2018-09-05 17:36:27 +03:00
Jon Dufresne
37f10651bd
Clean up commented out debug print statements
2018-09-04 20:02:42 -07:00
Jon Dufresne
7e67b9c58f
Use TextIOWrapper.detach() instead of NoCloseStream
...
Usage and this pattern is discussed in Python bug: https://bugs.python.org/issue21363
2018-09-04 19:30:36 -07:00
yo1995
bb77f62586
fix typo: proceeded -> processed
2018-09-04 21:15:25 -04:00
Konstantin Kopachev
f3edf52900
Convert unsupported WebP mode to RGB as .convert supports more src modes
2018-09-04 11:00:29 -07:00
yo1995
3cf1a4ea87
improved comments and one logic according to PR 3294 discussion
2018-09-04 12:03:20 -04:00
Andrew Murray
5e2d6c951a
Merge branch 'master' into perfperf-improv-ImageDraw-floodfill
2018-09-01 20:58:53 +10:00
Andrew Murray
4a34116be5
Removed duplicate code
2018-09-01 18:30:04 +10:00
Andrew Murray
0411caba67
Catch ValueError when processing the edge of an image
2018-09-01 17:18:13 +10:00
Andrew Murray
fbc121d678
Changed GIF seek to remove previous info items
2018-09-01 09:28:22 +10:00
Hugo
2d6f0f77da
Fix typo
2018-08-25 19:06:11 +03:00
Hugo
29b2c6e23d
Only import cffi where needed, to avoid problems with PYTHONOPTIMIZE=2
2018-08-25 19:06:11 +03:00
Hugo
d7e4d3db3f
Convert assert into exception
2018-08-25 19:06:11 +03:00
Hugo
fc8717fb04
Remove docstring formatting for when PYTHONOPTIMIZE=2
2018-08-25 19:06:11 +03:00
Andrew Murray
3ae5f05410
Changed Kernel to subclass BuiltinFilter, instead of the other way around
2018-08-25 23:30:47 +10:00
Andrew Murray
36b1afff26
Fixed None as TIFF compression argument
2018-08-25 08:21:43 +10:00
Andrew Murray
fc57658635
Added PDF creation and modification date info
2018-08-25 00:58:49 +10:00
Andrew Murray
f5740dc305
Set PDF title to filename by default
2018-08-25 00:58:49 +10:00
Andrew Murray
de2fbc9dff
Wait until mode is normalized to copy im.info into encoderinfo
2018-08-25 00:55:51 +10:00
Andrew Murray
e98469ecf6
Added transparency to matrix conversion
2018-08-25 00:54:51 +10:00
Andrew Murray
df328a89a4
Added PySide2
2018-08-25 00:51:50 +10:00
Konstantin Kopachev
0704367952
Add more parenthesis to make statement clearer
2018-08-12 21:44:25 -07:00
Andrew Murray
e3aaa80c06
Added NumPy to documentation
2018-08-12 13:58:26 +10:00
Andrew Murray
046df78448
Fixed typos
2018-08-11 16:39:49 +10:00
Konstantin Kopachev
84b32a0388
Read/Save RGB webp as RGB (instead of RGBX)
2018-08-09 11:40:10 -07:00
Andrew Murray
1648676435
Fixed typo [ci skip]
2018-08-09 20:54:16 +10:00
yo1995
a221420ec3
fixe typo
2018-08-06 19:36:18 +08:00
yo1995
8676044a27
fix docstring tab
2018-08-06 18:47:49 +08:00
yo1995
24388addb6
feature improvement: improved performance of ImageDraw.floodfill with Python built-in set() datatype.
2018-08-06 18:13:57 +08:00
Hugo
f70f952f85
Merge branch 'master' into add-width-to-shapes
2018-07-14 14:58:48 +03:00
tsennott
50d6611587
moved tuple test to assert method in PillowTestCase; added docs
2018-07-09 07:04:48 -07:00
tsennott
1eed17c70e
tightened up colorize(); split tests; moved tuple comparison fcn to helper.py
2018-07-08 20:09:39 -07:00
tsennott
4a6ec5ca72
updated colorize to allow optional black/white positions; enhanced tests
2018-07-07 18:19:26 -07:00
tsennott
b19c460568
fixed mapping function, now smooth
2018-07-06 19:49:07 -07:00
tsennott
3c6fd275c8
added assert for midpoint range
2018-07-06 19:09:57 -07:00
tsennott
adf570a77e
adding tests, updated docstring and comments
2018-07-06 18:42:16 -07:00
tsennott
63d8637bb8
adding three-color feature to ImageOps.colorize
2018-07-06 18:18:06 -07:00
Hugo
5d751572cc
Merge pull request #2922 from radarhere/fill_ink
...
Skip outline if the draw operation fills with the same colour
2018-07-02 22:19:35 +03:00
Hugo
959db43d22
Merge pull request #3173 from radarhere/flake8
...
Flake8 fixes
2018-07-02 21:42:17 +03:00
Hugo
4d88e2852e
Merge pull request #2187 from jdufresne/open-warning
...
Avoid deprecated 'U' mode when opening files
2018-07-02 21:34:32 +03:00
Andrew Murray
2630054266
Removed unused import
2018-07-02 19:26:07 +10:00
Andrew Murray
c2189235af
Line too long
2018-07-02 19:26:02 +10:00
Andrew Murray
145589ef14
Ambiguous variable name 'l'
2018-07-02 19:21:44 +10:00
Andrew Murray
e7cfa15216
Visually indented line with same indent as next logical line
2018-07-02 19:21:44 +10:00
Andrew Murray
0e61d4be9f
Removed unused variables
2018-07-02 19:21:44 +10:00
Andrew Murray
32cebddd1e
Multiple imports on one line
2018-07-02 19:21:44 +10:00
Andrew Murray
e7815ccd62
Block comment should start with '# '
2018-07-02 19:21:44 +10:00
Andrew Murray
fe42591f5f
Removed redundant backslash between brackets
2018-07-02 19:20:48 +10:00
Andrew Murray
5a33e02072
Commented unused variable
2018-07-02 19:20:48 +10:00
Andrew Murray
bf29960283
Fixed multiple spaces after operator
2018-07-02 19:20:48 +10:00
Hugo
d6e3ef85c2
Add width parameter to arc, chord, ellipse, pieslice
2018-07-02 11:26:42 +03:00
Hugo
9dedbff713
Add width parameter to rectangle
2018-07-02 11:21:30 +03:00
Hugo
ae9f62040d
5.3.0.dev0 version bump
2018-07-02 10:26:56 +03:00
Hugo
c28bf86b7e
5.2.0 version bump
2018-07-01 22:40:29 +03:00
Hugo
c222df2b56
Merge pull request #3137 from radarhere/pdf
...
Fixed saving a multiframe image as a single frame PDF
2018-07-01 22:18:48 +03:00
Hugo
8e3c450de2
Merge pull request #3143 from radarhere/qt
...
If a Qt version is already imported, attempt to use it first
2018-07-01 22:16:05 +03:00
Hugo
af552801c2
Merge pull request #3186 from danpla/tga-write-rle
...
TGA: Add support for writing RLE data
2018-07-01 22:00:03 +03:00
Hugo
80d399a485
Merge pull request #3178 from danpla/tga-la
...
TGA: Read and write LA data
2018-07-01 21:57:10 +03:00
Hugo
abae745da1
Merge pull request #3114 from tianyu139/hotfix
...
Fixed bug in ImageDraw.multiline_textsize()
2018-07-01 21:34:45 +03:00
Hugo
490464010a
Merge pull request #3113 from tianyu139/develop
...
Added getsize_multiline support for PIL.ImageFont
2018-07-01 21:33:21 +03:00
Hugo
d97e16c903
Merge pull request #3190 from radarhere/mimetype
...
Added ImageFile get_format_mimetype method
2018-07-01 21:19:57 +03:00
Hugo
cebcc06a1b
Merge pull request #3216 from radarhere/mmap
...
Changed mmap file pointer to use context manager
2018-07-01 20:59:54 +03:00
Jon Dufresne
1ba14783d2
Avoid deprecated 'U' mode when opening files
...
Instead, use PSFile() wrapper to handle all newline in the EPS spec.
Update line ending tests to handle all combinations of '\n' and '\r'.
Fixes warning "DeprecationWarning: 'U' mode is deprecated" in tests.
2018-07-01 08:07:59 -07:00
Martin Thoma
32e721498a
Use cls instead of klass as first argument
...
This is captured by N804 / https://www.python.org/dev/peps/pep-0008/?#function-and-method-arguments
of PEP8
2018-07-01 14:10:58 +02:00
Alex Clark
17be81f53d
Merge pull request #3218 from hugovk/update-docstrings
...
Update docstrings
2018-07-01 07:50:07 -04:00
Hugo
2b09e7fa6a
Merge pull request #3099 from uploadcare/lut-numpy
...
NumPy support for LUTs
2018-07-01 13:18:03 +03:00
Hugo
d52fd2b79b
Merge pull request #3217 from radarhere/pop
...
Simplified dictionary pop
2018-07-01 12:49:32 +03:00
Hugo
36be37c5c5
update package and version module docstrings
...
Co-authored-by: gnbl <gnbl@github>
2018-07-01 10:45:08 +03:00
Hugo
87d38a6dde
Merge pull request #2946 from hugovk/2944-exif
...
Only extract first Exif segment
2018-07-01 07:53:17 +03:00
Hugo
5dda23d547
Merge pull request #3135 from hugovk/test-imagedraw2
...
Test ImageDraw2
2018-07-01 07:48:54 +03:00
Andrew Murray
4d59941608
Simplified dictionary pop
2018-07-01 14:47:48 +10:00
Andrew Murray
c971bac651
Changed mmap file pointer to use context manager
2018-07-01 12:19:30 +10:00
Andrew Murray
dbf899fb78
Removed manual determination of mmap file length
2018-07-01 12:09:23 +10:00
Alex Clark
eafbb395a9
Merge pull request #1817 from radarhere/gd
...
Added GD tests
2018-06-30 18:01:36 -04:00
Alex Clark
9e5494e9a6
Merge pull request #3123 from hugovk/collections.abc-deprecationwarning
...
Fix collections ABCs DeprecationWarning in Python 3.7
2018-06-30 18:00:10 -04:00
Hugo
2be5c035fb
Merge pull request #3201 from landfillbaby/patch-1
...
unpack_from is faster than unpack of slice
2018-06-30 23:12:43 +03:00
Andrew Murray
6793b5bbd5
Added ImageFile get_format_mimetype method
2018-06-30 21:08:41 +10:00
Andrew Murray
d9653a48c7
Added file handling links in documentation
2018-06-30 16:44:59 +10:00
Lucy Phipps
98cff5320a
unpack_from is faster than unpack of slice
2018-06-24 18:00:22 +01:00
Andrew Murray
7274636a7e
Added coordinate system links in documentation
2018-06-24 14:34:01 +10:00
Daniel Plakhotich
1d20056234
TGA: Add support for writing RLE data
2018-06-15 23:01:06 +03:00
Daniel Plakhotich
39fae6e077
TGA: Read and write LA data
2018-06-14 12:18:08 +03:00
Hugo
3c032a3809
Merge pull request #3171 from radarhere/save
...
Corrected argument name in documentation
2018-06-14 09:31:31 +03:00
Hugo
aaa2560374
Merge pull request #3164 from radarhere/fill
...
Improved Image.transform documentation
2018-06-14 09:27:37 +03:00
Hugo
48dda53c12
Merge pull request #3163 from radarhere/fillcolor
...
Fixed transform fillcolor argument when image mode is RGBA or LA
2018-06-14 09:25:00 +03:00
Andrew Murray
a73dcf42ad
Corrected argument name in documentation
2018-06-12 04:42:25 +10:00
Andrew Murray
ae2ffb8a05
Fixed transform fillcolor argument when image mode is RGBA or LA
2018-06-12 04:41:46 +10:00
Andrew Murray
62c870f5cf
Fixed raising of no exception
2018-06-12 04:41:31 +10:00
Andrew Murray
15a4aaec7c
Improved Image.transform documentation [ci skip]
2018-06-08 22:04:13 +10:00
Andrew Murray
1947d65c7b
Removed unnecessary init method
2018-06-03 16:43:30 +10:00
Andrew Murray
30b292c6d8
Corrected argument name in documentation
2018-06-01 20:18:41 +10:00
Hugo
9050b47169
Not in this version, not in any version
2018-05-31 15:11:50 +03:00
Andrew Murray
3d82672404
Added getrgb hsb color string
2018-05-31 06:14:29 +10:00
Andrew Murray
b50f63430f
Added getrgb hsv color string
2018-05-31 06:13:22 +10:00
Andrew Murray
adda3b7473
Allow float values in getrgb hsl color string
2018-05-30 21:00:44 +10:00
Andrew Murray
821862c401
If a Qt version is already imported, attempt to use it first
2018-05-29 21:21:53 +10:00
Andrew Murray
3bbd0a5810
Fixed saving a multiframe image as a single frame PDF
2018-05-18 22:15:45 +10:00
Hugo
3dbd4fb9e8
Fix DeprecationWarning in Python 3.7
2018-05-06 15:31:43 +03:00
Andrew Murray
765a6c7e74
Updated redirected URLs
2018-04-30 14:20:32 +10:00
Andrew Murray
f77adb5ab3
Replaced broken URLs with archive URLs
2018-04-30 11:01:09 +10:00
Hugo
de6baf65f3
Clarify PILLOW_VERSION will be removed after VERSION
2018-04-25 11:24:50 +03:00
Hugo
ef9bf76ce8
PILLOW_VERSION will be removed in a future release
2018-04-25 11:24:50 +03:00
Hugo
34d66494ca
Keep Image.VERSION here
2018-04-25 11:21:38 +03:00
Hugo
d80ed2e948
Deprecate PILLOW_VERSION and VERSION, use __version__ instead
2018-04-25 11:21:38 +03:00
Hugo
e33dd498f5
Prefer more conventional __version__ rather than PILLOW_VERSION
2018-04-25 11:21:38 +03:00
tianyu
d6926009d0
Fixed bug: ImageDraw.multiline_textsize() returning wrong size by adding extra spacing
2018-04-24 22:54:27 +08:00
tianyu
b77e89b286
Added getsize_multiline support for ImageFont
2018-04-24 22:26:52 +08:00
Hugo
04a1f71b4c
Merge pull request #3105 from radarhere/py3
...
Change Python version checks to use util
2018-04-22 18:37:33 +03:00
Andrew Murray
b4e6cdadac
Added py3 variable to _util
2018-04-20 09:19:13 +10:00
Andrew Murray
bf77bba323
Changed dictionary comprehension style
2018-04-18 16:00:57 +10:00
Andrew Murray
cbc056f43d
Fixed whitespace
2018-04-18 16:00:57 +10:00
Andrew Murray
06f4cd62ad
Removed redundant backslashes
2018-04-18 16:00:18 +10:00
Andrew Murray
30c9ca15fb
Fixed docstrings
2018-04-18 16:00:17 +10:00
Alexander
5ec1b2e8ba
versionadded
2018-04-14 18:48:06 +03:00
Alexander
c8405ef706
Transparently store numpy arrays in ColorLut
2018-04-14 18:16:28 +03:00
Alexander Karpinsky
b01ba0f50c
Merge pull request #3091 from uploadcare/lut-alter
...
Transforming LUTs
2018-04-14 18:08:52 +03:00
Alexander
854a0d6044
edit doctring [ci skip]
2018-04-14 15:03:34 +03:00
Alexander
68af72bef4
edit doctring [ci skip]
2018-04-13 10:07:51 +03:00
Alexander
d9b8d970b2
edit doctring [ci skip]
2018-04-12 23:42:47 +03:00
Alexander
daa8e7dacd
Add earlier catching of wrong channels count
2018-04-12 12:40:40 +03:00
Alexander
1a371e572c
update repr method
2018-04-12 12:10:28 +03:00
Alexander
75c76d91e1
Add repr for Color3DLUT
2018-04-12 11:54:54 +03:00
Alexander
70c453b857
rename alter() to transform()
...
add with_normals argument
docstring
2018-04-11 16:17:10 +03:00
Alexander
dcb37dd1f1
new method alter(); 3 times faster generate()
2018-04-11 16:15:10 +03:00
Hugo
215b0e0833
Merge pull request #3086 from radarhere/info
...
Change encoderinfo to have priority over info when saving GIF images
2018-04-11 15:23:19 +03:00
Andrew Murray
05c78a13e7
Changed encoderinfo to have priority over info when saving GIF images
2018-04-11 08:57:31 +10:00
Alexander
6958ce1700
Rename PIL.version to PIL._version and remove it from module
2018-04-09 16:09:36 +03:00
Alexander Karpinsky
e24fad40ad
Merge pull request #3056 from uploadcare/color-LUT
...
3D Color lookup tables
2018-04-09 10:41:44 +03:00
Hugo
0567a54cd7
Merge pull request #3057 from storesource/RotateImagewithColor
...
Enabling background colour parameter on rotate
2018-04-05 09:45:22 +01:00
Jon Dufresne
85ff61f4dc
Remove unused Python class, Path
...
The class is always overridden by the C implementation. The Python
implementation is unused.
2018-04-03 20:57:30 -07:00
Eric Soroos
0b578f25d5
5.1.0 version bump
2018-04-02 10:23:36 +00:00
Alexander
4231038132
Remove unused imports
2018-04-01 19:52:39 +03:00
Alexander
912980c52f
Remove Color3DLUT.from_cube_file from сore library
2018-03-31 19:56:09 +03:00
Alexander
805dc44707
improve color cube parser
2018-03-30 11:29:59 +03:00
Alexander
e304a0d501
add tests, fix error messages
2018-03-30 09:57:54 +03:00
Alexander
aa929dda98
from_cube_file + test
2018-03-30 02:02:37 +03:00
Alexander
7f0bbf52e3
Python3 fix
2018-03-29 17:37:00 +03:00
Alexander
622749530b
Color3DLUT.generate
2018-03-29 17:26:21 +03:00
Alexander
506995d816
Tests for python API
2018-03-29 16:37:35 +03:00
Alexander
461a090405
Python interface
2018-03-29 14:40:34 +03:00
storesource
f358038968
modify comment
2018-03-27 19:03:35 +05:30
storesource
bca6c4384f
Added review Changes
...
Changed parameter name to fillcolor
Added full stop on param description
2018-03-27 19:01:33 +05:30
storesource
a42beccee7
Enabling background colour parameter on rotate
...
Enabling the user to choose the background colour of the final rotated image rather than just black.
parameter added: backgroundcolor
2018-03-26 19:29:44 +05:30
wiredfool
0e9f07def9
Merge pull request #3042 from hugovk/3006-parser-feed
...
Fix TypeError for JPEG2000 parser feed
2018-03-21 07:56:23 +00:00
wiredfool
d173e81798
Merge pull request #3023 from kkopachev/issue-3022
...
Certain corrupted jpegs can result in no data read
2018-03-21 07:55:17 +00:00
wiredfool
f504cbe642
Merge pull request #3007 from jleclanche/feat/blp
...
Add support for BLP file format
2018-03-21 07:54:29 +00:00
wiredfool
c004b6beaa
Merge pull request #2998 from hugovk/simplify-version-checks
...
Simplify version checks
2018-03-21 07:50:51 +00:00
wiredfool
659824773b
Merge pull request #2996 from timgraham/invalid-escape
...
Fix "invalid escape sequence" warning on Python 3.6+
2018-03-21 07:50:34 +00:00
Andrew Murray
2123dd70fb
Allow append_images to set .icns scaled images
2018-03-19 19:38:07 +11:00
Hugo
d61921455e
Prevent TypeError for JPEG2000 parser feed
2018-03-18 11:13:33 +02:00
Hugo
ddc9e73b47
Merge pull request #2965 from vashek/master
...
Support appending to existing PDFs
2018-03-13 11:30:25 +02:00
Hugo
13767f045f
Use named version attributes and simplify version checks
2018-03-12 10:35:29 +02:00
Andrew Murray
6af53a7303
Improved efficient saving by copying the saved image, instead of saving the same image twice
2018-03-11 22:14:49 +11:00
Andrew Murray
de80b8f36b
Fixed efficient saving
2018-03-11 22:01:06 +11:00