mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
Merge branch 'master' of github.com:python-imaging/Pillow
This commit is contained in:
commit
c6b41f27a1
12
PIL/Image.py
12
PIL/Image.py
|
@ -224,6 +224,18 @@ _MODE_CONV = {
|
||||||
"RGBA": ('|u1', 4),
|
"RGBA": ('|u1', 4),
|
||||||
"CMYK": ('|u1', 4),
|
"CMYK": ('|u1', 4),
|
||||||
"YCbCr": ('|u1', 3),
|
"YCbCr": ('|u1', 3),
|
||||||
|
"I;16": ('=u2', None),
|
||||||
|
"I;16B": ('>u2', None),
|
||||||
|
"I;16L": ('<u2', None),
|
||||||
|
"I;16S": ('=i2', None),
|
||||||
|
"I;16BS": ('>i2', None),
|
||||||
|
"I;16LS": ('<i2', None),
|
||||||
|
"I;32": ('=u4', None),
|
||||||
|
"I;32B": ('>u4', None),
|
||||||
|
"I;32L": ('<u4', None),
|
||||||
|
"I;32S": ('=i4', None),
|
||||||
|
"I;32BS": ('>i4', None),
|
||||||
|
"I;32LS": ('<i4', None),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _conv_type_shape(im):
|
def _conv_type_shape(im):
|
||||||
|
|
|
@ -359,51 +359,55 @@ class JpegImageFile(ImageFile.ImageFile):
|
||||||
self.tile = []
|
self.tile = []
|
||||||
|
|
||||||
def _getexif(self):
|
def _getexif(self):
|
||||||
# Extract EXIF information. This method is highly experimental,
|
return _getexif(self)
|
||||||
# and is likely to be replaced with something better in a future
|
|
||||||
# version.
|
|
||||||
from PIL import TiffImagePlugin
|
def _getexif(self):
|
||||||
import io
|
# Extract EXIF information. This method is highly experimental,
|
||||||
def fixup(value):
|
# and is likely to be replaced with something better in a future
|
||||||
if len(value) == 1:
|
# version.
|
||||||
return value[0]
|
from PIL import TiffImagePlugin
|
||||||
return value
|
import io
|
||||||
# The EXIF record consists of a TIFF file embedded in a JPEG
|
def fixup(value):
|
||||||
# application marker (!).
|
if len(value) == 1:
|
||||||
try:
|
return value[0]
|
||||||
data = self.info["exif"]
|
return value
|
||||||
except KeyError:
|
# The EXIF record consists of a TIFF file embedded in a JPEG
|
||||||
return None
|
# application marker (!).
|
||||||
file = io.BytesIO(data[6:])
|
try:
|
||||||
head = file.read(8)
|
data = self.info["exif"]
|
||||||
exif = {}
|
except KeyError:
|
||||||
# process dictionary
|
return None
|
||||||
|
file = io.BytesIO(data[6:])
|
||||||
|
head = file.read(8)
|
||||||
|
exif = {}
|
||||||
|
# process dictionary
|
||||||
|
info = TiffImagePlugin.ImageFileDirectory(head)
|
||||||
|
info.load(file)
|
||||||
|
for key, value in info.items():
|
||||||
|
exif[key] = fixup(value)
|
||||||
|
# get exif extension
|
||||||
|
try:
|
||||||
|
file.seek(exif[0x8769])
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
info = TiffImagePlugin.ImageFileDirectory(head)
|
info = TiffImagePlugin.ImageFileDirectory(head)
|
||||||
info.load(file)
|
info.load(file)
|
||||||
for key, value in info.items():
|
for key, value in info.items():
|
||||||
exif[key] = fixup(value)
|
exif[key] = fixup(value)
|
||||||
# get exif extension
|
# get gpsinfo extension
|
||||||
try:
|
try:
|
||||||
file.seek(exif[0x8769])
|
file.seek(exif[0x8825])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
info = TiffImagePlugin.ImageFileDirectory(head)
|
info = TiffImagePlugin.ImageFileDirectory(head)
|
||||||
info.load(file)
|
info.load(file)
|
||||||
for key, value in info.items():
|
exif[0x8825] = gps = {}
|
||||||
exif[key] = fixup(value)
|
for key, value in info.items():
|
||||||
# get gpsinfo extension
|
gps[key] = fixup(value)
|
||||||
try:
|
return exif
|
||||||
file.seek(exif[0x8825])
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
info = TiffImagePlugin.ImageFileDirectory(head)
|
|
||||||
info.load(file)
|
|
||||||
exif[0x8825] = gps = {}
|
|
||||||
for key, value in info.items():
|
|
||||||
gps[key] = fixup(value)
|
|
||||||
return exif
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
# stuff to save JPEG files
|
# stuff to save JPEG files
|
||||||
|
|
|
@ -39,8 +39,8 @@ class WebPImageFile(ImageFile.ImageFile):
|
||||||
self.tile = [("raw", (0, 0) + self.size, 0, self.mode)]
|
self.tile = [("raw", (0, 0) + self.size, 0, self.mode)]
|
||||||
|
|
||||||
def _getexif(self):
|
def _getexif(self):
|
||||||
from PIL.JpegImagePlugin import JpegImageFile
|
from PIL.JpegImagePlugin import _getexif
|
||||||
return JpegImageFile._getexif.im_func(self)
|
return _getexif(self)
|
||||||
|
|
||||||
|
|
||||||
def _save(im, fp, filename):
|
def _save(im, fp, filename):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user