Hugo van Kemenade
43b2f61e79
Add 'from __future__ import annotations' using Ruff/isort
2023-12-21 13:13:31 +02:00
Benjamin Gilbert
14146732be
Clarify JPEG tests for default/invalid subsampling
...
-1 is the default; 3 is invalid and should behave the same as the default.
2023-12-13 18:26:35 -06:00
Andrew Murray
f90827dfc8
Rearranged subsampling assertions
2023-12-13 18:26:35 -06: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
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
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
e10a58ccce
Concatenate multiple EXIF markers
2023-10-26 21:46:38 +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
7319d86328
Catch struct.error from truncated EXIF when reading DPI
2023-10-12 10:13:46 +11:00
Andrew Murray
a3fd009875
Match warning message
2023-10-06 17:31:06 +11:00
Andrew Murray
f24222a954
Merge branch 'main' into jpeg_xmp
2023-10-06 17:23:53 +11:00
Andrew Murray
0a28840bc4
Expand buffer size when optimizing or progressive
2023-08-19 14:34:08 +10:00
Andrew Murray
3f78ba80f9
Do not require curly bracket in tag name
2023-07-10 22:05:28 +10:00
Andrew Murray
2488167f33
Allow for zero-byte padding at end of XMP data
2023-07-10 22:00:30 +10:00
Matthew Treinish
6215cd3e0f
Update tests to handle no longer raising
2023-07-06 09:28:35 -04:00
Andrew Murray
93e507294b
Only assert image is similar
2023-05-05 08:19:43 +10:00
Ishant Mrinal Haloi
5377b0735f
add _repr_jpg_ for ipython display
...
Signed-off-by: Ishant Mrinal Haloi <mrinal.haloi11@gmail.com>
2023-05-04 21:43:57 +05:30
Hugo van Kemenade
52f4fc59a2
Remove JpegImagePlugin.convert_dict_qtables, deprecated in 8.3.0
2023-04-06 16:11:36 +03:00
Hugo van Kemenade
d2e77de070
Merge pull request #6853 from radarhere/child_images
...
Relaxed child images check to allow for libjpeg
2023-02-12 07:26:18 +02:00
Andrew Murray
bb524018d3
Raise an error when EXIF data is too long
2023-02-11 16:20:27 +11:00
pre-commit-ci[bot]
24183d652e
[pre-commit.ci] auto fixes from pre-commit.com hooks
...
for more information, see https://pre-commit.ci
2023-02-06 19:27:19 +00:00
Andrew Murray
97385d7cc7
Relaxed child images check to allow for libjpeg
2023-01-02 19:54:12 +11:00
Andrew Murray
5257d561c0
Merge pull request #6748 from radarhere/exif_ifd
...
Added IFD enum to ExifTags
2022-12-14 07:33:14 +11:00
Andrew Murray
c2a42655e1
Allow get_child_images to access JPEG thumbnails
2022-12-06 19:30:53 +11:00
Sam Mason
1ed1a3a971
make sure passing a blank comment removes existing comment
2022-12-03 15:07:37 +00:00
Andrew Murray
525c01143a
Test that comment is reread
2022-12-03 09:59:22 +11:00
pre-commit-ci[bot]
e9f4858491
[pre-commit.ci] auto fixes from pre-commit.com hooks
...
for more information, see https://pre-commit.ci
2022-12-02 18:07:10 +00:00
Sam Mason
d822d85af6
support round-tripping JPEG comments
2022-12-02 17:57:19 +00:00
Mark Mayo
69baeccf2e
some pylint warnings
...
Fixed some pylint issues
2022-10-13 15:20:11 +13:00
Andrew Murray
c259ac492f
Parametrized tests
2022-10-03 16:57:42 +11:00
Hugo van Kemenade
d42efd7ec0
Update URL ( #16 )
2022-04-28 08:26:57 +10:00
Andrew Murray
ae8de77721
Raise ValueError when trying to save empty image
2022-03-28 21:18:53 +11:00
Andrew Murray
dae1f691c2
Updated checks that no warnings were raised
2022-02-21 13:49:01 +11:00
Andrew Murray
f8e4e9c2dd
Added enums
2022-01-15 09:02:31 +11:00
Andrew Murray
1059eb5376
If appended EOI did not work, do not keep trying
2022-01-01 21:04:32 +11:00
Hugo van Kemenade
31a96b9c9b
Upgrade Python syntax with pyupgrade --py36-plus and format with Black
2021-10-19 15:34:52 +03:00
Andrew Murray
98aa0f10ad
pre-commit autoupdate --freeze
2021-08-12 21:50:09 +10:00
Alexander Karpinsky
3abe5e884b
Add TypeError handling to pass corrupted dpi value in exif
2021-07-26 16:13:01 +03:00
Andrew Murray
d11c794997
Merge branch 'master' into 4962-jpeg-zigzag
2021-06-30 20:54:55 +10:00
Andrew Murray
0aa8bd00e7
Added warning if defusedxml is not found
2021-06-30 11:29:13 +10:00
Andrew Murray
d9d811ff21
Replaced xml.etree.ElementTree with defusedxml.ElementTree
2021-06-30 11:28:44 +10:00
Andrew Murray
a1d8d638bf
Checked complete length of value
2021-06-29 19:41:00 +10:00
Andrew Murray
cd31dae0d1
Added getxmp() for PNG
2021-06-12 13:57:14 +10:00
Andrew Murray
c1fbe2d975
Corrected getxmp() descending into XML
2021-06-12 11:58:11 +10:00
Andrew Murray
18e204df05
Removed DPI rounding from JPEG loading
2021-05-07 21:23:29 +10:00
Andrew Murray
6967f3519f
Test when "adobe_transform" is unable to be read
2021-04-20 20:53:50 +10:00
Andrew Murray
4351c37fc4
Corrected adobe_transform value
2021-04-15 21:49:51 +10:00
Eric Soroos
1c872a9eda
lint stuff
2021-04-10 16:58:01 +02:00
Eric Soroos
a3a69c8385
conditional mark for valgrind ignore
2021-04-09 23:53:24 +02:00
Andrew Murray
2c8684c525
Moved getxmp() into JpegImageFile
2021-04-01 22:28:37 +11:00
Andrew Murray
c52b45df62
Removed automatic retrieval of GPS IFD
2021-03-15 12:33:06 +11:00
Andrew Murray
3495b319bd
Replaced various instances of assert_image_similar with assert_image_similar_tofile
2021-02-21 22:22:29 +11:00
Andrew Murray
a5c251029c
Replaced various instances of assert_image_equal with assert_image_equal_tofile
2021-02-21 22:15:56 +11:00
Hugo van Kemenade
1857bf5570
Merge pull request #5259 from radarhere/warns
2021-02-17 21:31:15 +02:00
Andrew Murray
83542c42bf
Added context managers
2021-02-11 21:43:54 +11:00
Andrew Murray
4a0569e97f
Changed zero length assertions to falsy
2021-02-11 13:48:31 +11:00
Eric Soroos
1d7c8e03d0
known failing tests from valgrind -- uninitialized values
2021-01-07 14:52:02 +01:00
gofr
9980981c2e
De-zigzag JPEG's DQT when loading; deprecate convert_dict_qtables
...
Re-order the JPEG quantization tables to normal order when
loading. This wastes a few CPU cycles if you don't need them.
But it has the advantage of hiding the zigzag order JPEG
implementation detail of these tables completely from Pillow
users.
This difference has led to cases where:
* arrays in zigzag order were taken from a dict and passed
directly as a qtables parameter, causing them to be "zigzagged"
again by libjpeg.
* dicts with lists in normal order being passed to
JpegImagePlugin.convert_dict_qtables, causing them to be
unnecessarily "de-zigzagged".
2020-10-17 20:20:59 +02:00
gofr
d54dc4062f
fixup! Add tests for loading/saving of 16-bit quantization tables
2020-10-10 20:01:28 +02:00
gofr
2f0544b542
Add tests for loading/saving of 16-bit quantization tables
2020-10-10 18:53:49 +02:00
Hugo van Kemenade
9f1f63a46b
Merge pull request #4862 from radarhere/subifds
2020-09-02 16:58:55 +03:00
Andrew Murray
186a4723c8
Added test for empty GPS IFD
2020-09-02 21:14:36 +10:00
Andrew Murray
298b7d0333
Update pre-commit
2020-08-31 18:50:15 +10:00
luphord
4bb35c57dd
clarify comment
...
Co-authored-by: Andrew Murray <3112309+radarhere@users.noreply.github.com>
2020-08-28 20:47:17 +10:00
luphord
ae5e0218e9
remove whitespace
2020-08-28 20:47:17 +10:00
luphord
1fd9ccfe3c
test Exif self-equality
2020-08-28 20:47:16 +10:00
Andrew Murray
e96109b93c
Added writing of subIFDs
2020-08-13 22:25:24 +10:00
Hugo van Kemenade
dd87dd50c0
Update to isort 5 with Black profile support
2020-08-08 22:39:29 +03:00
Kirill Kuzminykh
6d2fe429c2
Reformat code of `test_file_jpeg.py
.
2020-06-22 12:20:57 +03:00
Andrew Murray
95ace8a39c
Merge branch 'master' into fix_jpeg_magic_number
2020-06-22 18:42:58 +10:00
nulano
a324f4a466
add version to features info block
2020-06-21 18:58:39 +10:00
Hugo van Kemenade
bcb8cbbf22
Merge pull request #4639 from radarhere/jfif
...
Write JFIF header when saving JPEG
2020-06-20 15:54:11 +03:00
Andrew Murray
65742cfc95
Renamed test
2020-06-20 09:57:51 +10:00
Andrew Murray
abbc890b20
Replaced OSError with more specific UnidentifiedImageError
2020-06-20 09:51:48 +10:00
Andrew Murray
3e9068a345
Decreased length of test image data
2020-06-20 09:48:55 +10:00
Kirill Kuzminykh
f99e0b824b
Replaced primitive "magic number" inside of JpegImagePlugin._accept() function by more correct version.
2020-06-18 16:18:18 +03:00
Andrew Murray
ccac9e1a3a
Changed to ImageFileDirectory_v2
2020-06-03 22:11:51 +10:00
Andrew Murray
696aa7972d
Parametrized test
2020-05-26 07:15:20 +10:00
Andrew Murray
660894cd36
Write JFIF header when saving JPEG
2020-05-24 23:58:30 +10:00
Andrew Murray
df886ed386
Merge pull request #4290 from bluepython508/fix_djpeg_load_test
...
Fixes djpeg load test
2020-05-16 19:53:18 +10:00
Alexander
f15e4a8e06
truncate icclist instead of changing to None
2020-05-08 19:48:20 +03:00
Hugo
dda6145fce
Since Python 3.3 IOError and WindowsError have been merged into OSError
2020-04-10 12:57:29 +03:00
Andrew Murray
e41cfade29
Add JPEG comment to info dictionary
2020-03-07 06:57:29 +11:00
Hugo
2cc6a9a974
Convert to use pytest
2020-03-02 16:31:08 +02:00
Hugo van Kemenade
3c995fd173
Merge pull request #4440 from radarhere/jpeg_quality
...
Allow saving of zero quality JPEG images
2020-02-25 12:02:53 +02:00
Hugo
699a9dadf1
Convert asserts
2020-02-22 18:07:04 +02:00
Andrew Murray
8482919a37
Converted most assert statements to pytest
2020-02-23 00:06:21 +11:00
Andrew Murray
a8c0794107
Allow saving of zero quality JPEG images
2020-02-21 22:05:44 +11:00
Jon Dufresne
4f185329f4
Streamline test skipping based on supported features
...
This adds a new test decorator: skip_unless_feature(). The argument is
the same as passed to features.check(). If the feature is not supported,
the test will be skipped.
This removes several kinds of boilerplate copied and pasted around tests
so test feature checking is handled and displayed more consistently.
Refs #4193
2020-02-18 13:07:01 -08:00
Jon Dufresne
98a2081a78
Move safe imports to the top of test files
...
These modules are safe to import and this better follows PEP 8.
From https://www.python.org/dev/peps/pep-0008/#imports
> Imports are always put at the top of the file, just after any module
> comments and docstrings, and before module globals and constants.
2020-02-17 10:49:27 -08:00
ben
a4721d374f
Fixes djpeg load test
...
* Test fails with `libjpeg-turbo` and `libjpeg-progs` on Ubuntu 16.04
* Epsilon reported is 4.18...
2020-02-15 13:59:53 +11:00
Hugo van Kemenade
098406c304
Merge pull request #4390 from jdufresne/resource-warning
...
Fix ResourceWarning emitted during tests
2020-02-12 17:10:51 +02:00
Hugo
38bf862185
Replace PillowTestCase.assert_warning with pytest.warns
2020-02-03 11:11:32 +02:00
Hugo
a4bf9fa036
Convert most PillowTestCase methods to pytest
2020-02-02 12:26:01 +02:00
Jon Dufresne
2b84221edf
Fix ResourceWarning emitted during tests
...
Appeared in the form:
ResourceWarning: unclosed file <_io.BufferedReader name='Tests/images/invalid-exif-without-x-resolution.jpg'>
Enable all warnings to always display during tests to help catch these
warnings earlier.
2020-01-26 16:00:46 -08:00
Alexander
73171f5046
add test image
2020-01-20 17:25:40 +03:00
Andrew Murray
ee30fe1b39
Merge pull request #4147 from beipang2/issue_4146
...
Use default DPI when exif provides invalid x_resolution
2019-12-25 20:26:27 +11:00
Andrew Murray
2d7cfc4bbc
Merge pull request #4239 from radarhere/photoshop
...
Handle broken Photoshop data
2019-12-01 07:33:26 +11:00
Andrew Murray
e51be50549
Handle broken Photoshop data
2019-11-30 10:08:32 +11:00
Andrew Murray
c0048ad7de
Use context managers
2019-11-26 07:03:23 +11:00