Commit Graph

3505 Commits

Author SHA1 Message Date
Andrew Murray
64ddace6c4 Add 'from __future__ import annotations' using Ruff/isort 2023-12-22 23:06:35 +11:00
Hugo van Kemenade
43b2f61e79 Add 'from __future__ import annotations' using Ruff/isort 2023-12-21 13:13:31 +02:00
Hugo van Kemenade
dd42a24f9e
Merge pull request #7565 from radarhere/tile 2023-12-21 12:59:28 +02:00
Hugo van Kemenade
18907b5f7e
Merge pull request #7568 from radarhere/gif_transparency 2023-12-21 12:58:07 +02:00
Hugo van Kemenade
0331d9d48b
Merge pull request #7560 from radarhere/string_length_check 2023-12-21 12:55:37 +02:00
Hugo van Kemenade
b638d056d5
Merge pull request #7548 from radarhere/imagefont 2023-12-21 12:55:20 +02:00
Hugo van Kemenade
9eb93915c3
Merge pull request #7521 from radarhere/gif_save_all 2023-12-21 12:52:26 +02:00
Hugo van Kemenade
ccfe33fd3a
Merge pull request #7515 from radarhere/gif 2023-12-21 12:51:20 +02:00
Hugo van Kemenade
7e30619541
Merge pull request #7483 from radarhere/psd 2023-12-21 12:50:34 +02:00
Andrew Murray
1f9dafec80 Added type hints for format and format_description 2023-12-19 14:11:00 +11:00
Hugo van Kemenade
368c05c9dc Inline isinstance check 2023-12-18 18:11:29 +02:00
Andrew Murray
b60a5827e8 Import annotations to allow for pipe as union type 2023-12-15 07:59:38 +11:00
Andrew Murray
e482ea9305
Corrected type hint
Co-authored-by: Ondrej Baranovič <nulano@nulano.eu>
2023-12-15 07:57:14 +11:00
Andrew Murray
ac38a91816 Added type hints 2023-12-14 23:10:30 +11:00
Andrew Murray
ac1f10fa82
Merge pull request #7576 from deliangyang/main
Import plugins relative to the module
2023-12-14 18:28:22 +11:00
Benjamin Gilbert
4b422db243 Add keep_rgb option to prevent RGB -> YCbCr conversion during JPEG write
libjpeg automatically converts RGB to YCbCr by default.  Add a keep_rgb
option to disable libjpeg's automatic conversion of RGB images during
write.
2023-12-13 18:26:35 -06:00
Andrew Murray
45e44085c0
Merge pull request #7609 from bgilbert/encoder-errors
Translate encoder error codes to strings; deprecate `ImageFile.raise_oserror()`
2023-12-13 20:45:47 +11:00
Benjamin Gilbert
e1fb1ab5c4 Deprecate raise_oserror() for removal in Pillow 12
It's only useful if the caller has an IMAGING_CODEC_* error code, which
are only produced by codec decode() methods and are automatically
translated by ImageFile.

Co-authored-by: Andrew Murray <radarhere@users.noreply.github.com>
2023-12-13 02:17:32 -06:00
Benjamin Gilbert
ec17dc11ba Translate encoder error codes to strings
When decoding, we use raise_oserror() to convert codec error codes to
strings.  Adapt that code to be used when encoding as well.  Add a new
helper function that returns the exception so we can still raise
`from exc`.
2023-12-12 23:13:51 -06:00
Andrew Murray
4c7eeec4fc
Merge pull request #7600 from nulano/anchor-clarify-docs
Clarify default anchor alignment
2023-12-13 07:36:00 +11:00
Nulano
af2d976880 clarify default anchor alignment 2023-12-12 17:22:19 +01:00
pre-commit-ci[bot]
232094e065 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-12-06 21:45:26 +00:00
Andrew Murray
8b44116773 Merge branch 'main' into dds_rgb 2023-12-07 08:43:57 +11:00
Hugo van Kemenade
7cc0482804
Merge pull request #6486 from REDxEYE/improved_dds 2023-12-06 22:51:05 +02:00
Andrew Murray
e9afaee248
Merge pull request #7593 from florath/ImageStat_getextrema_opt
Optimize ImageStat.Stat._getextrema function
2023-12-06 17:27:56 +11:00
Andrew Murray
e43dd6610d
Merge pull request #7578 from radarhere/font
Handle pathlib.Path in FreeTypeFont
2023-12-06 12:09:16 +11:00
Andrew Murray
00c6a89177 Link to plugin 2023-12-06 11:10:20 +11:00
Andreas Florath
ed03954d9e
Merge branch 'main' into ImageStat_getextrema_opt 2023-12-05 16:39:18 +01:00
REDxEYE
9e6030f5a9
Rename _420_OPAQUE to OPAQUE_420
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
2023-12-05 13:04:19 +03:00
Andrew Murray
0a66b98558
Merge pull request #7597 from hugovk/comprehensions
Use list comprehensions to create transformed lists
2023-12-05 18:56:49 +11:00
Andrew Murray
f2e478e968 Merge branch 'main' into improved_dds 2023-12-05 17:49:47 +11:00
Andrew Murray
b3f374333b
Merge pull request #7603 from sambvfx/bc4-dds
Added support for reading DX10 BC4 DDS images
2023-12-05 17:23:16 +11:00
Hugo van Kemenade
f7c3f2a447
Use underscore as throwaway variable
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-12-05 00:03:38 +02:00
Sam Bourne
8c5d5c7e6b Add support for BC4 dds files 2023-12-04 09:54:10 -08:00
Hugo van Kemenade
9601102724
Merge branch 'main' into comprehensions 2023-12-04 17:09:10 +02:00
Hugo van Kemenade
fe26900688
Merge pull request #7599 from florath/ImageStat_getcount_opt 2023-12-04 17:04:38 +02:00
Hugo van Kemenade
e92c07f402
Apply suggestions from code review
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
Co-authored-by: Alexander Karpinsky <homm86@gmail.com>
2023-12-04 16:34:39 +02:00
Andrew Murray
d042c4bc37 Added typing.IO to type hint 2023-12-04 22:26:14 +11:00
Andrew Murray
9a6c47a9d2 Merge branch 'main' into font 2023-12-04 22:25:58 +11:00
Andrew Murray
b51dcc070b
Merge pull request #7587 from radarhere/freetypefont
Moved error from truetype() to FreeTypeFont
2023-12-04 22:05:38 +11:00
Andrew Murray
b431e2c140
Merge pull request #7555 from radarhere/pdf_palette
Correct PDF palette size when saving
2023-12-04 21:54:01 +11:00
Andreas Florath
90e1e94530
Merge branch 'python-pillow:main' into ImageStat_getcount_opt 2023-12-04 10:36:21 +01:00
Andreas Florath
ac47b75953
Update src/PIL/ImageStat.py
Simplification of return statement

Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-12-04 10:27:30 +01:00
Hugo van Kemenade
27d7bd10c8 Use list comprehensions to create transformed lists 2023-12-03 21:59:44 +02:00
Andrew Murray
e072a12974 Corrected constant values 2023-12-02 21:36:17 +11:00
Andrew Murray
5aadeb5004 Moved _Tile to ImageFile 2023-12-02 21:36:17 +11:00
Andrew Murray
ab96324c12 Removed support for RGB bitcount 8 2023-12-02 21:36:17 +11:00
Andrew Murray
56b4822294 args may be a string or None 2023-12-02 21:36:17 +11:00
Andrew Murray
662cb229c2 Updated variable name to match tile 2023-12-02 21:36:17 +11:00
Andrew Murray
49578f0059
Merge branch 'main' into improved_dds 2023-12-02 21:35:20 +11:00
Andrew Murray
a6a612c6c5
Merge branch 'main' into fix-alpha-for-overlapping-glyphs 2023-12-02 21:33:29 +11:00
Andrew Murray
96fe0a103b Merge branch 'main' into ImageStat_getextrema_opt 2023-12-02 21:27:36 +11:00
Zach Nagengast
bd2977c518
Update src/PIL/ImageDraw.py
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-12-01 22:56:59 -08:00
Andrew Murray
0e523d9868 Fixed closing file pointer with olefile 0.47 2023-12-02 10:57:16 +11:00
Andreas Florath
7762dd382a Fixed spacing in _getextrema method
Signed-off-by: Andreas Florath <andreas@florath.net>
2023-12-01 18:53:44 +01:00
Andreas Florath
1b8f9d386b Optimize ImageStat.Stat._getextrema function
The optimzed function improves the performance.  The original function
always runs through the complete historgram of length 256 even if it
is possible to exit the loop early (break).

Running some tests I found performance improvements of factor >10
depending on the image.

Signed-off-by: Andreas Florath <andreas@florath.net>
2023-12-01 18:53:44 +01:00
Andreas Florath
e01354a2c8 Added space before colon
Signed-off-by: Andreas Florath <andreas@florath.net>
2023-12-01 18:52:27 +01:00
Andreas Florath
f7d40ce31c Removed functools and operator import which are not needed anymore
Signed-off-by: Andreas Florath <andreas@florath.net>
2023-12-01 18:52:27 +01:00
Andreas Florath
a04c6a27e8 Optimization of ImageStat.Stat._getcount method
The new implementation uses "sum" instead of the construct
"functools.reduce(operator.add, ...)". Test showed that the
new function is about three times faster than the original.
Also it is shorter and easier to read.

Signed-off-by: Andreas Florath <andreas@florath.net>
2023-12-01 18:52:27 +01:00
Hugo van Kemenade
76446ee450
Merge pull request #7524 from cclauss/ruff-rules-C4-PERF102-PIE810-PLR 2023-12-01 17:09:25 +02:00
Andrew Murray
2e8dd3bdca Use int.from_bytes() 2023-12-01 22:56:25 +11:00
Andrew Murray
30eb41475d Use f-string
Co-authored-by: Aarni Koskela <akx@iki.fi>
2023-12-01 22:44:51 +11:00
Nulano
984700b1f7 fix documentation link to PIL.ImageFont.Layout 2023-11-30 23:58:47 +01:00
Andrew Murray
13c1d752c6
Use enum in type hint
Co-authored-by: Ondrej Baranovič <nulano@nulano.eu>
2023-12-01 08:42:25 +11:00
Andrew Murray
f1fef09d4a Support arbitrary masks for uncompressed RGB images 2023-11-30 21:13:59 +11:00
Andrew Murray
f23d029d5f Moved error from truetype() to FreeTypeFont 2023-11-30 07:41:02 +11:00
Andrew Murray
5fb86c55ed Moved code closing fp and _fp into common method 2023-11-29 20:05:17 +11:00
Zach Nagengast
78f78d2aa7
Update src/_imagingft.c
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-11-28 11:53:46 -08:00
Aarni Koskela
39ec56c6ea Improve error message when creating TrueType fonts of invalid size
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-11-28 15:09:53 +02:00
helloworld
b235aa98c6 fix: use parent_name instead of parent_module 2023-11-28 20:21:03 +08:00
Andrew Murray
4bc365547a
Corrected type hint
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
2023-11-28 21:43:58 +11:00
Andrew Murray
9e8edb42b6 Added type hint 2023-11-28 21:18:58 +11:00
Deliang Yang
6825a76692 fix: Importing plugins from a user-specified installation directory
[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

fix: Wrong path replacement

[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

fix: typo
2023-11-28 08:25:16 +08:00
Zach Nagengast
9c60e856ad
Apply suggestions from code review
Co-authored-by: Ondrej Baranovič <nulano@nulano.eu>
2023-11-27 09:20:40 -08:00
Nulano
0cef9f251c fix drawing text alpha on RGBA image on big-endian platforms 2023-11-27 17:12:12 +01:00
Andrew Murray
ae7958fa8d Handle pathlib.Path in FreeTypeFont 2023-11-27 23:03:10 +11:00
Andrew Murray
55c5587437 Fill identical pixels with transparency in subsequent frames 2023-11-25 19:16:32 +11:00
Andrew Murray
f59b51fdc7 Simplified code 2023-11-25 17:36:19 +11:00
Andrew Murray
5431b15bd2 Do not assign new fp attribute to image when exiting context manager 2023-11-24 15:19:19 +11:00
Andrew Murray
a07bac3a56 Attempt memory mapping when tile args is a string 2023-11-21 21:45:14 +11:00
Andrew Murray
524b823c1b Removed unnecessary string length check 2023-11-17 17:41:47 +11:00
Andrew Murray
67e1253202 Do not assign new fp attribute to image when closing 2023-11-17 08:32:25 +11:00
Raphael Vieira Rossi
b25ece364b
fix: check object Image has attribute 'fp' when closes 2023-11-16 16:46:11 -03:00
Andrew Murray
98b73009cc Correct PDF palette size when saving 2023-11-16 23:01:26 +11:00
Andrew Murray
4b308dc2bf
Merge pull request #7488 from bgilbert/jpeg-restart
Allow configuring JPEG restart marker interval on save
2023-11-14 23:42:50 +11:00
Hugo van Kemenade
902055fbfe
Merge pull request #7526 from akx/mount-ruffmore 2023-11-13 16:15:06 +02:00
Aarni Koskela
f47633a24a
Apply suggestions from code review
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-11-13 09:28:01 +02:00
Andrew Murray
086ca274fa Decrement reference count for PyObject 2023-11-13 15:11:28 +11:00
Andrew Murray
f016d3079b Determine mask mode in Python instead of C 2023-11-13 14:31:22 +11:00
Aarni Koskela
126bc44e9e Fix up most noqas
Update Tests/bench_cffi_access.py

Co-authored-by: Alexander Karpinsky <homm86@gmail.com>
2023-11-12 13:47:52 +02:00
Hugo van Kemenade
556dd1e15c
Merge pull request #7535 from hugovk/add-3.13 2023-11-12 00:34:12 +02:00
Hugo van Kemenade
9b8c23e2dd
Merge pull request #7527 from akx/remove-commented-out-code 2023-11-11 14:32:15 +02:00
Andrew Murray
bf76320444
Merge pull request #7491 from bgilbert/jpeg-tables-only
Implement `streamtype=1` option for tables-only JPEG encoding
2023-11-11 16:06:34 +11:00
Hugo van Kemenade
9b88cf5ad9 #ifdef _UNISTD_H -> HAVE_UNISTD_H 2023-11-08 18:48:40 +02:00
Hugo van Kemenade
95eef25aca Fix for Python 3.13: explicitly include unistd.h 2023-11-08 17:52:43 +02:00
ZachNagengast
11bea8fea6 Merge branch 'main' of ssh://github.com/python-pillow/Pillow into fix-alpha-for-overlapping-glyphs 2023-11-07 06:34:31 -08:00
Hugo van Kemenade
a7fe25df53
Merge pull request #7522 from radarhere/png_save_all 2023-11-07 11:35:24 +02:00
ZachNagengast
8ecf2e9f30 Merge branch 'fix-alpha-for-overlapping-glyphs' of ssh://github.com/ZachNagengast/Pillow into fix-alpha-for-overlapping-glyphs 2023-11-06 21:11:36 -08:00
ZachNagengast
fdecfca9f4 Update gray glyph blending logic and tests 2023-11-06 21:11:28 -08:00
Zach Nagengast
b15b2d494c
Update src/_imagingft.c
Co-authored-by: Ondrej Baranovič <nulano@nulano.eu>
2023-11-06 20:48:22 -08:00
Aarni Koskela
0c705692ea Remove old commented-out code 2023-11-06 21:21:07 +02:00
pre-commit-ci[bot]
eb8405baa0 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-11-06 13:24:42 +00:00
Christian Clauss
fd59f91d17 ruff: Minor optimizations of list comprehensions, x in set, etc. 2023-11-06 19:13:47 +06:00
Aarni Koskela
9e615b6ad3 Add noqas for UP031 2023-11-06 12:43:14 +02:00
Aarni Koskela
307d00b44d Apply ruff autofixes 2023-11-06 12:43:14 +02:00
ZachNagengast
e1aaec3fb1 Merge branch 'main' of ssh://github.com/python-pillow/Pillow into fix-alpha-for-overlapping-glyphs 2023-11-03 15:09:07 -07:00
ZachNagengast
a7f805d889 Merge branch 'fix-alpha-for-overlapping-glyphs' of ssh://github.com/ZachNagengast/Pillow into fix-alpha-for-overlapping-glyphs 2023-11-03 15:08:50 -07:00
ZachNagengast
bb0eff44cd Update blending logic
- Unpremultiply properly
- No longer uses floats
2023-11-03 15:05:55 -07:00
Andrew Murray
c29648ff53 If save_all PNG only has one frame, do not create animated image 2023-11-03 22:08:48 +11:00
Andrew Murray
dc0379fea5 Corrected combining durations from multiple frames into single frame 2023-11-03 21:09:16 +11:00
Andrew Murray
a5a6ca150c
Merge pull request #7493 from radarhere/frombytes
Fixed frombytes() for images with a zero dimension
2023-11-03 18:56:34 +11:00
Andrew Murray
7c2b681183 Handle disposing background from outside palette 2023-11-02 16:05:13 +11:00
Benjamin Gilbert
e572722479 Allow configuring JPEG restart marker interval on save
libjpeg allows specifying the marker interval either in MCU blocks or in
MCU rows.  Support both, via separate parameters, rather than requiring
callers to do the math.

Co-authored-by: Andrew Murray <radarhere@users.noreply.github.com>
2023-10-31 17:47:25 -05:00
Andrew Murray
8814610635 Only unpack masks when necessary 2023-10-30 22:16:55 +11:00
REDxEYE
cb554c6d0f
Update src/PIL/DdsImagePlugin.py
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-10-30 13:55:02 +03:00
Andrew Murray
e3ff5eb8e4 Test BC1_UNORM and BC1_TYPELESS 2023-10-30 19:53:51 +11:00
Andrew Murray
0051fc9cf8 Removed unnecessary seek 2023-10-28 16:43:43 +11:00
Andrew Murray
3652f431c2 Simplified code 2023-10-28 14:22:39 +11:00
Andrew Murray
76f758e1ef Merge branch 'main' into fix-alpha-for-overlapping-glyphs 2023-10-28 00:41:41 +11:00
pre-commit-ci[bot]
49fd2116c3 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-10-27 05:03:04 +00:00
ZachNagengast
f97570f523 Blend colors with alpha when pasting
- Previously took the highest alpha as threshold
2023-10-26 21:40:41 -07:00
Andrew Murray
e10a58ccce Concatenate multiple EXIF markers 2023-10-26 21:46:38 +11:00
Andrew Murray
85485229e3 Support RGB bitcount 8 2023-10-25 16:24:00 +11:00
Andrew Murray
f58f410b21 ALPHA by itself does not mean bitcount is valid 2023-10-25 15:30:59 +11:00
Benjamin Gilbert
4d7372bfd0 Implement streamtype=1 option for tables-only JPEG encoding
We already support streamtype=2 to skip producing JPEG tables, but
streamtype=1, which skips everything but the tables, was never implemented.
The streamtype=1 stub code dates to Git pre-history, so it's not
immediately clear why.  Implement the missing support.

jpeg_write_tables() can't resume after a full output buffer (it fails with
JERR_CANT_SUSPEND), so it might seem that Pillow needs to pre-compute the
necessary buffer size.  However, in the normal case of producing an
interchange stream, the tables are written via the same libjpeg codepath
during the first jpeg_write_scanlines() call, and table writes aren't
resumable there either.  Thus, any buffer large enough for the normal case
will also be large enough for a tables-only file.

The streamtype option isn't documented and this commit doesn't change that.
It does add a test though.

Co-authored-by: Andrew Murray <radarhere@users.noreply.github.com>
2023-10-24 20:30:45 -05:00
Andrew Murray
91f115bead Fixed im.frombytes() for images with a zero dimension 2023-10-25 08:52:26 +11:00
Andrew Murray
5071692039 Fixed Image.frombytes() for images with a zero dimension 2023-10-25 08:52:06 +11:00
Yay295
6ddf10c747
use format string instead of concatenation
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2023-10-23 21:46:54 -05:00
Yay295
ef46608974
add mode to error message 2023-10-23 19:26:08 -05:00
Andrew Murray
12e41e84cd Simplified creating raw tiles 2023-10-21 19:12:52 +11:00
Andrew Murray
8fbb610378 Derive bit count from number of modes 2023-10-21 17:33:04 +11:00
Andrew Murray
4a4a1ee6ad Simplified tile creation 2023-10-21 16:03:21 +11:00
Andrew Murray
a54d28a7bc Merge branch 'main' into improved_dds 2023-10-21 14:27:31 +11:00
Andrew Murray
935958c990 Removed unnecessary casting to enums 2023-10-21 14:27:23 +11:00
Andrew Murray
5056850a2f Seek past the data when skipping a layer 2023-10-20 16:09:13 +11:00
Andrew Murray
19aeed07bf Merge branch 'main' into gray 2023-10-20 07:47:17 +11:00
Andrew Murray
d682c18ded Use "gray" more consistently 2023-10-19 19:12:01 +11:00
Andrew Murray
8b71f3d3c1 Added messages to errors 2023-10-19 18:42:41 +11:00
Andrew Murray
51f7359c94 Loop over enums to create constants 2023-10-17 19:50:17 +11:00
Andrew Murray
5e9a2e3000 Renamed "tile_args" to "args" for consistency with existing ImageFile variable 2023-10-17 19:10:24 +11:00
Hugo van Kemenade
0be67e5544 10.2.0.dev0 version bump 2023-10-15 16:05:50 +03:00
Hugo van Kemenade
da59ad000d 10.1.0 version bump 2023-10-15 11:59:17 +03:00
Andrew Murray
c2d50881ee Added documentation 2023-10-14 11:01:57 +11:00
Andrew Murray
0da7ad7c48 Merge branch 'main' into load_default 2023-10-14 10:33:50 +11:00
Hugo van Kemenade
ebefb5f1e0
Merge pull request #7442 from radarhere/warning 2023-10-14 01:30:59 +02:00
Hugo van Kemenade
8e5570e23b
Merge pull request #7444 from radarhere/bgr 2023-10-14 01:30:31 +02:00
mergify[bot]
a4bc7146e5
Merge pull request #7412 from radarhere/cover
Added ImageOps cover method
2023-10-13 22:16:30 +00:00
Hugo van Kemenade
ff37a5be37
Merge pull request #7458 from radarhere/truncated_exif 2023-10-13 23:49:55 +02:00
Hugo van Kemenade
101154e0d5
Merge pull request #7437 from radarhere/apng 2023-10-13 23:48:22 +02:00
Hugo van Kemenade
810f5f06c4
Merge branch 'main' into cover 2023-10-13 23:42:06 +02:00