mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
Merge pull request #7053 from radarhere/tiff
Added ImageSourceData to TAGS_V2
This commit is contained in:
commit
daca312c5d
|
@ -668,6 +668,16 @@ class TestFileLibTiff(LibTiffTestCase):
|
||||||
assert reloaded.tag_v2[530] == (1, 1)
|
assert reloaded.tag_v2[530] == (1, 1)
|
||||||
assert reloaded.tag_v2[532] == (0, 255, 128, 255, 128, 255)
|
assert reloaded.tag_v2[532] == (0, 255, 128, 255, 128, 255)
|
||||||
|
|
||||||
|
def test_exif_ifd(self, tmp_path):
|
||||||
|
outfile = str(tmp_path / "temp.tif")
|
||||||
|
with Image.open("Tests/images/tiff_adobe_deflate.tif") as im:
|
||||||
|
assert im.tag_v2[34665] == 125456
|
||||||
|
im.save(outfile)
|
||||||
|
|
||||||
|
with Image.open(outfile) as reloaded:
|
||||||
|
if Image.core.libtiff_support_custom_tags:
|
||||||
|
assert reloaded.tag_v2[34665] == 125456
|
||||||
|
|
||||||
def test_crashing_metadata(self, tmp_path):
|
def test_crashing_metadata(self, tmp_path):
|
||||||
# issue 1597
|
# issue 1597
|
||||||
with Image.open("Tests/images/rdf.tif") as im:
|
with Image.open("Tests/images/rdf.tif") as im:
|
||||||
|
|
|
@ -72,10 +72,18 @@ data to populate those resources.
|
||||||
PpmImagePlugin might hold onto the last data read for a pixel value in case the
|
PpmImagePlugin might hold onto the last data read for a pixel value in case the
|
||||||
pixel value has not been finished yet. However, that data was not being cleared
|
pixel value has not been finished yet. However, that data was not being cleared
|
||||||
afterwards, meaning that infinite data could be available to fill any image
|
afterwards, meaning that infinite data could be available to fill any image
|
||||||
size.
|
size. This has been present since Pillow 9.2.0.
|
||||||
|
|
||||||
That data is now cleared after use.
|
That data is now cleared after use.
|
||||||
|
|
||||||
|
Saving TIFF tag ImageSourceData
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
If Pillow incorrectly saved the TIFF tag ImageSourceData as ASCII instead of
|
||||||
|
UNDEFINED, a segmentation fault was triggered.
|
||||||
|
|
||||||
|
The correct tag type will now be used by default instead.
|
||||||
|
|
||||||
Other Changes
|
Other Changes
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,7 @@ TAGS_V2 = {
|
||||||
34675: ("ICCProfile", UNDEFINED, 1),
|
34675: ("ICCProfile", UNDEFINED, 1),
|
||||||
34853: ("GPSInfoIFD", LONG, 1),
|
34853: ("GPSInfoIFD", LONG, 1),
|
||||||
36864: ("ExifVersion", UNDEFINED, 1),
|
36864: ("ExifVersion", UNDEFINED, 1),
|
||||||
|
37724: ("ImageSourceData", UNDEFINED, 1),
|
||||||
40965: ("InteroperabilityIFD", LONG, 1),
|
40965: ("InteroperabilityIFD", LONG, 1),
|
||||||
41730: ("CFAPattern", UNDEFINED, 1),
|
41730: ("CFAPattern", UNDEFINED, 1),
|
||||||
# MPInfo
|
# MPInfo
|
||||||
|
|
|
@ -904,7 +904,7 @@ PyImaging_LibTiffEncoderNew(PyObject *self, PyObject *args) {
|
||||||
&encoder->state, (ttag_t)key_int, (UINT16)PyLong_AsLong(value));
|
&encoder->state, (ttag_t)key_int, (UINT16)PyLong_AsLong(value));
|
||||||
} else if (type == TIFF_LONG) {
|
} else if (type == TIFF_LONG) {
|
||||||
status = ImagingLibTiffSetField(
|
status = ImagingLibTiffSetField(
|
||||||
&encoder->state, (ttag_t)key_int, (UINT32)PyLong_AsLong(value));
|
&encoder->state, (ttag_t)key_int, PyLong_AsLongLong(value));
|
||||||
} else if (type == TIFF_SSHORT) {
|
} else if (type == TIFF_SSHORT) {
|
||||||
status = ImagingLibTiffSetField(
|
status = ImagingLibTiffSetField(
|
||||||
&encoder->state, (ttag_t)key_int, (INT16)PyLong_AsLong(value));
|
&encoder->state, (ttag_t)key_int, (INT16)PyLong_AsLong(value));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user