python-pillow / Pillow

Python Imaging Library (Fork)
https://python-pillow.org
Other
12.11k stars 2.22k forks source link

Return incorrect DPI #2817

Closed mlove4u closed 3 years ago

mlove4u commented 6 years ago

41-01

The DPI is 144 when i check in Photoshop. But, with Pillow, myImage.info['dpi'] returns (300.0, 300.0). Is it a bug? Thanks.

hugovk commented 6 years ago

We're getting 300dpi from EXIF:

image

However, Preview.app suggests 144dpi is from the TIFF tags and shows nothing in EXIF:

hugovk commented 6 years ago

exiftool shows 144, 300 and 72 dpi from EXIF (XResolution), and 144 dpi from Photoshop:

$ exiftool -s -ee -g 2817.jpg
---- ExifTool ----
ExifToolVersion                 : 10.55
---- File ----
FileName                        : 2817.jpg
Directory                       : .
FileSize                        : 72 kB
FileModifyDate                  : 2017:10:30 09:38:36+02:00
FileAccessDate                  : 2017:10:30 10:57:57+02:00
FileInodeChangeDate             : 2017:10:30 10:45:31+02:00
FilePermissions                 : rw-r--r--
FileType                        : JPEG
FileTypeExtension               : jpg
MIMEType                        : image/jpeg
ExifByteOrder                   : Big-endian (Motorola, MM)
CurrentIPTCDigest               : 6b6428b00e3ee4fe6d34607c456880e3
ImageWidth                      : 551
ImageHeight                     : 551
EncodingProcess                 : Baseline DCT, Huffman coding
BitsPerSample                   : 8
ColorComponents                 : 3
YCbCrSubSampling                : YCbCr4:4:4 (1 1)
---- EXIF ----
ImageWidth                      : 3500
ImageHeight                     : 3500
BitsPerSample                   : 8 8 8 8
Compression                     : LZW
PhotometricInterpretation       : CMYK
Make                            : Canon
Model                           : Canon EOS-1Ds Mark III
Orientation                     : Horizontal (normal)
SamplesPerPixel                 : 4
XResolution                     : 144
YResolution                     : 144
PlanarConfiguration             : Chunky
ResolutionUnit                  : inches
Software                        : Adobe Photoshop CS6 (Macintosh)
ModifyDate                      : 2017:10:12 14:53:18
Artist                          : shopping
Copyright                       : reisenthel
XResolution                     : 300
YResolution                     : 300
ResolutionUnit                  : inches
ModifyDate                      : 2010:10:13 11:21:37
ExposureTime                    : 1/60
FNumber                         : 16.0
ExposureProgram                 : Manual
ISO                             : 100
ExifVersion                     : 0220
DateTimeOriginal                : 2010:10:13 11:21:37
CreateDate                      : 2010:10:13 11:21:37
ShutterSpeedValue               : 1/64
ApertureValue                   : 16.0
ExposureCompensation            : 0
SubjectDistance                 : 0 m
MeteringMode                    : Multi-segment
Flash                           : No Flash
FocalLength                     : 50.0 mm
ColorSpace                      : Uncalibrated
ExifImageWidth                  : 551
ExifImageHeight                 : 551
FocalPlaneResolutionUnit        : inches
FileSource                      : Digital Camera
SceneType                       : Directly photographed
ExposureMode                    : Manual
WhiteBalance                    : Manual
Compression                     : JPEG (old-style)
XResolution                     : 72
YResolution                     : 72
ResolutionUnit                  : inches
ThumbnailOffset                 : 914
ThumbnailLength                 : 7442
ThumbnailImage                  : (Binary data 7442 bytes, use -b option to extract)
---- IPTC ----
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
CodedCharacterSet               : UTF8
ApplicationRecordVersion        : 4
By-line                         : shopping
Credit                          : Produktbild
Source                          : 01
ObjectName                      : BA0104
DateCreated                     : 2010:10:13
TimeCreated                     : 00:00:00+00:00
City                            : reisenthel
Sub-location                    : BA0104_F_01_JC_11_10_RGB.tif
Country-PrimaryLocationName     : Johann-Cohrs
Category                        : RGB
SupplementalCategories          : katalog-2011., katalog-usa-2011.
Keywords                        : carrybag
CopyrightNotice                 : reisenthel
OriginatingProgram              : FotoWare indexmanager
SimilarityIndex                 : 4DA09AF54ED4500EEF
---- Photoshop ----
IPTCDigest                      : 6b6428b00e3ee4fe6d34607c456880e3
XResolution                     : 144
DisplayedUnitsX                 : inches
YResolution                     : 144
DisplayedUnitsY                 : inches
PrintStyle                      : Centered
PrintPosition                   : 0 0
PrintScale                      : 1
GlobalAngle                     : 30
GlobalAltitude                  : 30
CopyrightFlag                   : False
URL_List                        :
SlicesGroupName                 : 41-01
NumSlices                       : 1
PixelAspectRatio                : 1
PhotoshopThumbnail              : (Binary data 7442 bytes, use -b option to extract)
HasRealMergedData               : Yes
WriterName                      : Adobe Photoshop
ReaderName                      : Adobe Photoshop CS6
ClippingPathName                : Pfad 1
PhotoshopQuality                : 9
PhotoshopFormat                 : Standard
ProgressiveScans                : 3 Scans
---- XMP ----
XMPToolkit                      : Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27
ModifyDate                      : 2017:10:12 14:53:18+09:00
CreateDate                      : 2010:10:13 11:21:37
MetadataDate                    : 2017:10:12 14:53:18+09:00
CreatorTool                     : Adobe Photoshop CS3 Macintosh
Format                          : image/jpeg
ColorMode                       : RGB
DateCreated                     : 2010:10:13
Category                        : RGB-Master
Credit                          : Produktbild
Country                         : Johann-Cohrs
Source                          : 01
City                            : reisenthel
InstanceID                      : xmp.iid:1CCE1D6931206811822AFD50CD641855
DocumentID                      : uuid:6A9E91192283E411AA44816904EF6A02
OriginalDocumentID              : xmp.did:CFC629E0A720681197A586E68DA3A011
Marked                          : False
FreigabeAb                      : 2011-01-01
Bildtyp                         : Produktbild.
Verwendungszweck                : RGB-Master
Warengruppe                     : shopping.
Sortierung                      : 01.
Farbe                           : red.
Status                          : original
Bildtyp_II                      : P
Freigegeben                     : ja.
ContentValue                    : 4DA09AF54ED4500EEF
Location                        : BA0104_F_01_JC_11_10_RGB.tif
XMPFileStamps                   : 2011:06:22 14:11:06+02:00, 2011:06:22 14:11:44+02:00, 2011:06:22 14:14:33+02:00, 2011:06:22 17:26:38+02:00, 2011:06:22 17:26:36+02:00
Rights                          : reisenthel
Subject                         : carrybag
Title                           : BA0104
Creator                         : shopping
SupplementalCategories          : katalog-2011., katalog-usa-2011.
DocumentAncestors               : xmp.did:023984136B2068118F62CE3404ADEF41, xmp.did:AAC7507B0720681192B0D657131C3A33, xmp.did:CFC629E0A720681197A586E68DA3A011
HistoryAction                   : created, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, converted, derived, saved, saved, converted, derived, saved, saved, converted, derived, saved
HistoryInstanceID               : xmp.iid:CFC629E0A720681197A586E68DA3A011, xmp.iid:68E933E7072068118C149A8545EBAE1D, xmp.iid:535220E0122068118C14F8DF2AAB8380, xmp.iid:0CBF1BDD8C206811994CFA7EFC9B1E0A, xmp.iid:66DF80832A20681192B0DE53B83929E4, xmp.iid:698874740720681188C6C738D40893F5, xmp.iid:8B5B2E7F0720681188C6C738D40893F5, xmp.iid:41534C7143206811994CDEB27AE81E1B, xmp.iid:B93CBDB638206811994CFB9ACEA54D20, xmp.iid:5DAB113E142068119A65DB491833929F, xmp.iid:E4FD1FE5132068118A6DDA0175F7DDB9, xmp.iid:AA9CFE02172068118A6DDA0175F7DDB9, xmp.iid:8E3C9A00182068119A65DB491833929F, xmp.iid:8F3C9A00182068119A65DB491833929F, xmp.iid:CC4808F327206811B34BB8DDDE3A10C5, xmp.iid:CD4808F327206811B34BB8DDDE3A10C5, xmp.iid:9180A77C36206811B34BB8DDDE3A10C5, xmp.iid:9280A77C36206811B34BB8DDDE3A10C5, xmp.iid:A1A8546211206811994CB4D0219DDCB8, xmp.iid:55CFD0C011206811994CB4D0219DDCB8, xmp.iid:E96519AB0A2068118DBBFB01550EAF6A, xmp.iid:EA6519AB0A2068118DBBFB01550EAF6A, xmp.iid:32128C350C2068119457829B4BDC9727, xmp.iid:33128C350C2068119457829B4BDC9727, xmp.iid:74E7DEBF162068118DBB91A758AFC191, xmp.iid:E28110D4F6206811994CB02B887583E6, xmp.iid:9E4047C828206811871FE6F9A2734C8B, xmp.iid:B0C1D2CC28206811871FE6F9A2734C8B, xmp.iid:F1B3186F2C206811871FE6F9A2734C8B, xmp.iid:F2B3186F2C206811871FE6F9A2734C8B, xmp.iid:1FB7B5F139206811893EC4DF96F8F6BD, xmp.iid:20B7B5F139206811893EC4DF96F8F6BD, xmp.iid:2867F85C09206811B1A4F119062B125F, xmp.iid:2967F85C09206811B1A4F119062B125F, xmp.iid:1BCE1D6931206811822AFD50CD641855, xmp.iid:1CCE1D6931206811822AFD50CD641855
HistoryWhen                     : 2010:10:13 11:21:37, 2010:10:26 23:25:27+02:00, 2010:11:26 21:32:34+01:00, 2010:11:30 01:24:03+01:00, 2010:12:01 16:35:32+01:00, 2010:12:08 11:07:54+01:00, 2010:12:08 11:08:12+01:00, 2010:12:09 02:17:56+01:00, 2011:01:25 19:15:17+01:00, 2011:01:26 00:25:03+01:00, 2011:01:26 00:25:31+01:00, 2011:01:26 00:47:49+01:00, 2011:01:26 00:51:46+01:00, 2011:01:26 00:51:46+01:00, 2011:01:26 16:26:09+01:00, 2011:01:26 16:26:09+01:00, 2011:01:26 18:04:55+01:00, 2011:01:26 18:04:55+01:00, 2011:01:28 16:57:44+01:00, 2011:01:28 16:58:40+01:00, 2011:01:30 14:46:18+01:00, 2011:01:30 14:46:33+01:00, 2011:01:31 16:03:46+01:00, 2011:01:31 16:03:46+01:00, 2011:09:02 12:48:45+02:00, 2011:10:17 20:28:37+02:00, 2011:10:29 17:56:43+02:00, 2011:10:29 17:56:43+02:00, 2011:10:29 18:22:47+02:00, 2011:10:29 18:22:47+02:00, 2012:01:06 17:28:43+09:00, 2012:01:06 17:28:43+09:00, 2014:12:04 15:27:12+09:00, 2014:12:04 15:27:12+09:00, 2017:10:12 14:53:18+09:00, 2017:10:12 14:53:18+09:00
HistorySoftwareAgent            : Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS6 (Macintosh), Adobe Photoshop CS6 (Macintosh)
HistoryChanged                  : /metadata, /metadata, /, /, /metadata, /metadata, /, /, /, /metadata, /metadata, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /
HistoryParameters               : from image/tiff to application/vnd.adobe.photoshop, converted from image/tiff to application/vnd.adobe.photoshop, from application/vnd.adobe.photoshop to image/jpeg, converted from application/vnd.adobe.photoshop to image/jpeg, from image/epsf to image/jpeg, converted from image/epsf to image/jpeg
DerivedFromInstanceID           : xmp.iid:1BCE1D6931206811822AFD50CD641855
DerivedFromDocumentID           : uuid:6A9E91192283E411AA44816904EF6A02
DerivedFromOriginalDocumentID   : xmp.did:CFC629E0A720681197A586E68DA3A011
Veroeffentlichung               : katalog-2011., katalog-usa-2011.
History                         : E=TXTM D=2011-06-20 T=16:22:34 U=mik V=%DCbertrag%20Fotograf, E=TXTM D=2011-06-20 T=17:04:10 U=mik V=%DCbertrag%20Warengruppe, E=TXTM D=2011-06-21 T=14:32:22 U=mik V=%DCbertrag%20Ver%F6ffentlichung, E=TXTM D=2011-06-21 T=15:39:30 U=mik V=%DCbertrag%20Sortierung, E=TXT D=2011-06-21 T=16:13:24 U=mik, E=TXT D=2011-06-21 T=16:43:29 U=mik, E=ACT D=2011-06-22 T=14:11:06 U=mik V=Bildexport_fuer_Damian, E=ACT D=2011-06-22 T=14:11:44 U=mik V=Bildexport_fuer_Damian, E=ACT D=2011-06-22 T=14:14:33 U=mik V=Bildexport_fuer_Damian, E=ACT D=2011-06-22 T=17:26:38 U=mik V=Bildexport_fuer_Damian
---- APP14 ----
DCTEncodeVersion                : 100
APP14Flags0                     : [14]
APP14Flags1                     : (none)
ColorTransform                  : YCbCr
---- Composite ----
Aperture                        : 16.0
DateTimeCreated                 : 2010:10:13 00:00:00+00:00
ImageSize                       : 551x551
Megapixels                      : 0.304
ShutterSpeed                    : 1/60
FocalLength35efl                : 50.0 mm
LightValue                      : 13.9
hugovk commented 6 years ago

Digging further, EXIF is loaded in two parts.

(Note: 0x11A == 282 == XResolution)

1st

At the first load, it's 144 dpi:

info.tags[282] => <type 'tuple'>: ((1440000, 10000),)

https://github.com/python-pillow/Pillow/blob/b8d6fd57fa0019163b47f0ce7788bc2151e9079f/PIL/JpegImagePlugin.py#L449-L452

2nd

At the second load, it's replaced with 300 dpi:

info.tags[282] => <type 'tuple'>: ((300, 1),)

https://github.com/python-pillow/Pillow/blob/b8d6fd57fa0019163b47f0ce7788bc2151e9079f/PIL/JpegImagePlugin.py#L453-L464

mlove4u commented 6 years ago

raw_data This is the info in RAW data in Photoshop.

radarhere commented 5 years ago

Since it was established in an earlier comment that Photoshop resolution is stored separately, I've created #3701 to allow the Photoshop resolution data to be read directly - im.info["photoshop"][0x03ed]['XResolution'], im.info["photoshop"][0x03ed]['YResolution']

radarhere commented 3 years ago

After #4947, im.info['dpi'] for this image became (144, 144) - so this is resolved.

Before that, tags 282 and 283 from the EXIF IFD (with value 300) where overwriting the root 282 and 283 tags (with value 144).