Ian Fieggen Ian's Software Site Ian's JPGExtra program
Ian's Software Site - Minimalist software programs that are tiny yet very powerful
JPGExtra - JPG File Technical Info.
Technical info about hidden extras in JPG files More in-depth technical information about the types of "extras" in JPG files and where they come from, plus some extraordinary examples that I've found during my research.


Exif Digital Camera Data
Example decoded Exif Data from one JPG file (scroll down for remainder):
ImageDescription - DCF 1.0
Make - Minolta Co., Ltd.
Model - DiMAGE 7i
Orientation - Top left
XResolution - 72
YResolution - 72
ResolutionUnit - Inch
Software - Ver.1.10e
DateTime - 2006:12:12 12:34:56
YCbCrPositioning - Centered
ExifOffset - 280
ExposureTime - 1/90 seconds
FNumber - 3.50
ExposureProgram - Normal program
ISOSpeedRatings - 200
ExifVersion - 0220
DateTimeOriginal - 2006:12:12 12:34:56
DateTimeDigitized - 2006:12:12 12:34:56
ComponentsConfiguration - YCbCr
BrightnessValue - 4.50
ExposureBiasValue - 1.00
MaxApertureValue - F 3.36
MeteringMode - Multi-segment
LightSource - Auto
Flash - Flash fired, compulsory flash mode
FocalLength - 16.21 mm
FlashPixVersion - 0100
ColorSpace - sRGB
ExifImageWidth - 2560
ExifImageHeight - 1920
InteroperabilityOffset - 13038
CustomRendered - Custom process
ExposureMode - Auto
WhiteBalance - Auto
DigitalZoomRatio - 0 x
FocalLengthIn35mmFilm - 65 mm
SceneCaptureType - Standard
GainControl - Low gain up
Contrast - Normal
Saturation - Normal
Sharpness - Normal
SubjectDistanceRange - Close view
NOTE: Due to potential privacy implications, any serial numbers or dates that were in the above Exif data have been replaced with digit sequences (eg. 12345678, 12:34:56, etc).
Digital camera, which adds Exif data Typical Usage of Exif Data:
Digital cameras generally store all sorts of information about the photo, including make and model of camera, date and time taken, exposure settings, focal distance, etc. This info can then be used elsewhere, such as by photo labs, printers, image cataloguing programs, etc.
Typical Sizes of Exif Data:
Often 232 bytes, or thousands of bytes if a Thumbnail Image is embedded (ie. either medium or major contributor of "extras").
Largest Exif Data:
I've found Exif Data segments of almost 50,000 bytes, containing thumbnail images padded with a large number of zero bytes.
Exif Data Format:
Full details of the Exif Specification can be found Here.
Exif Data Privacy Implications:
The make and model of the camera may be of interest to either burglars or divorce lawyers. The focal length could be used to determine whether a paparazzi photographer was trespassing. Dates and times could be used to track someone's movements. Those are just three examples of possible privacy implications!


Thumbnail Images
Example Thumbnail Data from one JPG file (scroll down for remainder):
FF D8 FF E0 00 10 4A 46 49 46 00 01 02 01 00 48
00 48 00 00 FF ED 00 0C 41 64 6F 62 65 5F 43 4D
00 01 FF EE 00 0E 41 64 6F 62 65 00 64 80 00 00
00 01 FF DB 00 84 00 0C 08 08 08 09 08 0C 09 09
0C 11 0B 0A 0B 11 15 0F 0C 0C 0F 15 18 13 13 15
13 13 18 11 0C 0C 0C 0C 0C 0C 11 0C 0C 0C 0C 0C
0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C
0C 0C 0C 0C ...

      (around 150 more rows of JPG data)

                                ... 5F D3 E6 64
C9 EF D8 E2 BB D6 AB F1 F9 52 5D D4 33 6D 78 75
97 3C 91 C4 1D B1 27 7F 0C DB F9 C5 5D E9 DD 77
37 16 F6 3A CB 9F 75 24 81 6B 2C 71 77 B4 E8 FD
85 C7 73 5D B5 65 39 21 2A 63 ED F0 EB 5C 2C 71
F7 38 B4 BB 77 3E B4 65 FA 99 ED C6 69 F6 63 36
0C 7E FB FD EF FF 00 A3 B1 63 4A 89 F3 48 23 8E
B8 05 1B 1D FF 00 35 64 24 CC D8 AF 0F C9 FF D9
Most thumbnail data is stored in the same format as the data of a full-sized JPG file. It's basically a small JPG file embedded within a large JPG file.
Sample thumbnail-sized image Typical Usage of Thumbnail Images:
These are miniature versions of the main image, usually around 100 pixels wide or high, that are often added by digital cameras or image editing software (eg. Adobe Photoshop) to provide quick previews prior to opening the full-sized image.
Embedding Thumbnail Images:
There are various ways that these small thumbnail images can be "embedded" within the larger, full-sized image, which depends mainly on the program doing the embedding.

Programs like Adobe Photoshop generally add their own data segment containing a thumbnail. Digital cameras often embed the thumbnail in the Exif camera information segment. One of my digital cameras even appends a second, higher resolution "thumbnail" to the end of the JPG file!
Thumbnail Image Formats:
In the very earliest JPG files, it was common to have thumbnails embedded in an un-compressed format. Programs that couldn't decode the JPG compression would still be able to display the thumbnail. As the JPG format became more accepted, these have gradually given way to the more common method of embedding them in JPG format.

Interestingly, if the main JPG file contains a Text Comment, the thumbnail image often contains the identical comment, thus doubling that "extra" amount!
Typical Sizes of Thumbnail Images:
Around 3,000 to 10,000 bytes (ie. major contributor of "extras").
Largest Thumbnail Images:
I've found thumbnails occupying 30,000 bytes or more, either because they were very high-res or because they were uncompressed or had a very low compression setting.

Countless JPG files nowadays actually contain two or more thumbnail images: one or more from the camera, and one or more from any program that has subsequently re-written the file. These are often identical but sometimes different. For example, one may be small and the other large, or one may be a thumbnail of the original image whilst the other is a thumbnail of the image after modification by the image editing software.
Thumbnail Image Privacy Implications:
There are serious privacy implications if a thumbnail image differs from the main image. For example, a JPG file containing a face that has been blurred to protect a person's identity could actually contain a thumbnail image with a small but recognisable face that hasn't been blurred.

Perhaps more worrying is the potential for such embedded images to portray illicit content, most disturbingly that of a sexual nature. On any website that allows visitors to contribute photos, it's entirely possible for an otherwise innocent looking JPG file to contain a heinous hidden payload.


ICC Color Profile Data
Example ICC Data from one JPG file (scroll down for remainder):
FF E2 0C 58 49 43 43 5F-50 52 4F 46 49 4C 45 00
01 01 00 00 0C 48 4C 69-6E 6F 02 10 00 00 6D 6E
74 72 52 47 42 20 58 59-5A 20 07 CE 00 02 00 09
00 06 00 31 00 00 61 63-73 70 4D 53 46 54 00 00
00 00 49 45 43 20 73 52-47 42 00 00 00 00 00 00
00 00 00 00 00 00 00 00-F6 D6 00 01 00 00 00 00
D3 2D 48 50 20 20 00 00-00 00 00 00 00 00 00 00
00 00 00 00 ...

(around 180 more rows of ICC Color Profile Data)

                                ... E0 BD E1 44
E1 CC E2 53 E2 DB E3 63 E3 EB E4 73 E4 FC E5 84
E6 0D E6 96 E7 1F E7 A9 E8 32 E8 BC E9 46 E9 D0
EA 5B EA E5 EB 70 EB FB EC 86 ED 11 ED 9C EE 28
EE B4 EF 40 EF CC F0 58 F0 E5 F1 72 F1 FF F2 8C
F3 19 F3 A7 F4 34 F4 C2 F5 50 F5 DE F6 6D F6 FB
F7 8A F8 19 F8 A8 F9 38 F9 C7 FA 57 FA E7 FB 77
FC 07 FC 98 FD 29 FD BA FE 4B FE DC FF 6D FF FF
ICC Color Profile Data Typical Usage of ICC Color Profile Data:
ICC Colour Profiles are generally used in the printing industry. Without getting too technical, the idea is to provide information on how colours should be handled on devices with different capabilities, in particular on scanners, computer screens and printing presses.
Typical Sizes of ICC Color Profile Data:
Usually 3,160 bytes; occasionally much larger (ie. medium contributor of "extras").
Largest ICC Color Profile Data:
The largest ICC Color Profile I've found was around 174,000 bytes. Ironically, this was embedded in a particularly small image of only 120 x 85 pixels. After processing that JPG file with JPGExtra, it was reduced from 202,412 bytes to a much more sensible 3,991 bytes, a total saving of 98%!
ICC Color Profile Data Format:
Full details of the ICC Color Profile Data Specification can be found Here on the International Color Consortium web-site.


Adobe XMP Data
Example XMP Data from one JPG file (scroll down for remainder):
<?xpacket begin='123' id='123456789012345678901234'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-28, framework 1.6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:crs='http://ns.adobe.com/camera-raw-settings/1.0/'>
  <crs:Version>2.2</crs:Version>
  <crs:RawFileName>V1234567.CRW</crs:RawFileName>
  <crs:WhiteBalance>As Shot</crs:WhiteBalance>
  <crs:Exposure>0.00</crs:Exposure>
  <crs:Shadows>0</crs:Shadows>
  <crs:Brightness>50</crs:Brightness>
  <crs:Contrast>+25</crs:Contrast>
  <crs:Saturation>0</crs:Saturation>
  <crs:Sharpness>25</crs:Sharpness>
  <crs:LuminanceSmoothing>0</crs:LuminanceSmoothing>
  <crs:ColorNoiseReduction>25</crs:ColorNoiseReduction>
  <crs:ChromaticAberrationR>0</crs:ChromaticAberrationR>
  <crs:ChromaticAberrationB>0</crs:ChromaticAberrationB>
  <crs:VignetteAmount>0</crs:VignetteAmount>
  <crs:ShadowTint>0</crs:ShadowTint>
  <crs:RedHue>0</crs:RedHue>
  <crs:RedSaturation>0</crs:RedSaturation>
  <crs:GreenHue>0</crs:GreenHue>
  <crs:GreenSaturation>0</crs:GreenSaturation>
  <crs:BlueHue>0</crs:BlueHue>
  <crs:BlueSaturation>0</crs:BlueSaturation>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:exif='http://ns.adobe.com/exif/1.0/'>
  <exif:ExposureTime>1/100</exif:ExposureTime>
  <exif:ShutterSpeedValue>6643856/1000000</exif:ShutterSpeedValue>
  <exif:FNumber>11/1</exif:FNumber>
  <exif:ApertureValue>6918863/1000000</exif:ApertureValue>
  <exif:ExposureProgram>1</exif:ExposureProgram>
  <exif:DateTimeOriginal>2004-12-12T12:34:56-12:00</exif:DateTimeOriginal>
  <exif:ExposureBiasValue>0/1</exif:ExposureBiasValue>
  <exif:MaxApertureValue>16875/10000</exif:MaxApertureValue>
  <exif:MeteringMode>2</exif:MeteringMode>
  <exif:FocalLength>50/1</exif:FocalLength>
  <exif:ColorSpace>4294967295</exif:ColorSpace>
  <exif:PixelXDimension>794</exif:PixelXDimension>
  <exif:PixelYDimension>1200</exif:PixelYDimension>
  <exif:ISOSpeedRatings>
   <rdf:Seq>
    <rdf:li>100</rdf:li>
   </rdf:Seq>
  </exif:ISOSpeedRatings>
  <exif:Flash rdf:parseType='Resource'>
   <exif:Fired>True</exif:Fired>
   <exif:Return>0</exif:Return>
   <exif:Mode>0</exif:Mode>
   <exif:Function>False</exif:Function>
   <exif:RedEyeMode>False</exif:RedEyeMode>
  </exif:Flash>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:aux='http://ns.adobe.com/exif/1.0/aux/'>
  <aux:SerialNumber>1234567890</aux:SerialNumber>
  <aux:Lens>50.0 mm</aux:Lens>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
  <photoshop:History></photoshop:History>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
  <tiff:Make>Canon</tiff:Make>
  <tiff:Model>Canon EOS 10D</tiff:Model>
  <tiff:Orientation>1</tiff:Orientation>
  <tiff:XResolution>240/1</tiff:XResolution>
  <tiff:YResolution>240/1</tiff:YResolution>
  <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:xap='http://ns.adobe.com/xap/1.0/'>
  <xap:ModifyDate>2004-12-12T12:34:56-12:00</xap:ModifyDate>
  <xap:CreateDate>2004-12-12T12:34:56-12:00</xap:CreateDate>
  <xap:MetadataDate>2004-12-12T12:34:56-12:00</xap:MetadataDate>
  <xap:CreatorTool>Adobe Photoshop CS Macintosh</xap:CreatorTool>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:stRef='http://ns.adobe.com/xap/1.0/sType/ResourceRef#'
  xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/'>
  <xapMM:DerivedFrom rdf:parseType='Resource'>
   <stRef:instanceID>uuid:12345678-1234-1234-1234-123456789012</stRef:instanceID>
   <stRef:documentID>adobe:docid:photoshop:12345678-1234-1234-1234-123456789012</stRef:documentID>
  </xapMM:DerivedFrom>
  <xapMM:DocumentID>adobe:docid:photoshop:12345678-1234-1234-1234-123456789012</xapMM:DocumentID>
 </rdf:Description>

 <rdf:Description rdf:about='uuid:12345678-1234-1234-1234-123456789012'
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
  <dc:format>image/jpeg</dc:format>
 </rdf:Description>

</rdf:RDF>
</x:xmpmeta>
NOTE: Due to potential privacy implications, any serial numbers or dates that were in the above XMP data have been replaced with digit sequences (eg. 12345678, 12:34:56, etc).
Adobe XMP Data Typical Usage of Adobe XMP Data:
Adobe's XMP (Extensible Metadata Platform), or its predecessor XAP (eXtensible Authoring and Publishing), is a labeling technology that allows you to embed data about a file, known as metadata, into the file itself.

XMP Data is mainly of benefit in the publishing industry, where having information about an image embedded in the image file can be invaluable (eg. copyright, ownership, origin, price, keywords, etc.)
Typical Sizes of Adobe XMP Data:
Around 4,500 to 5,500 bytes (ie. major contributor of "extras").
Largest Adobe XMP Data:
The largest Adobe XMP Data segment I've found was around 8,500 bytes.

Interestingly, it seems that Adobe XMP Data segments are padded to a minimum size of 4,500 bytes. The majority of those that I examined were more or less empty, comprising little or no actual data followed by thousands of bytes of blank spaces!
Adobe XMP Data Format:
Full details of Adobe's XMP Specification can be found Here.
Adobe XMP Data Privacy Implications:
Generally speaking, XMP Data is intended to carry information, which is usually specifically added by the user. However, even when a user has not chosen to "add" any information, the XMP Data often duplicates the Exif Data, with therefore the same privacy implications. In addition, various embedded identification numbers may be traceable to an individual computer, person or organization.


Apple XML Data
Example XML Data from one JPG file (scroll down for remainder):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist (View Source for full doctype...)>
<plist version="1.0">
<dict>
<key>com.apple.print.PageFormat.PMHorizontalRes</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMHorizontalRes</key>
<real>72</real>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PageFormat.PMOrientation</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMOrientation</key>
<integer>1</integer>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PageFormat.PMScaling</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMScaling</key>
<real>1</real>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PageFormat.PMVerticalRes</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMVerticalRes</key>
<real>72</real>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PageFormat.PMVerticalScaling</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMVerticalScaling</key>
<real>1</real>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.subTicket.paper_info_ticket</key>
<dict>
<key>com.apple.print.PageFormat.PMAdjustedPageRect</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMAdjustedPageRect</key>
<array>
<real>0.0</real>
<real>0.0</real>
<real>734</real>
<real>576</real>
</array>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PageFormat.PMAdjustedPaperRect</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PageFormat.PMAdjustedPaperRect</key>
<array>
<real>-18</real>
<real>-18</real>
<real>774</real>
<real>594</real>
</array>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PaperInfo.PMPaperName</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.print.pm.PostScript</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PaperInfo.PMPaperName</key>
<string>na-letter</string>
<key>com.apple.print.ticket.client</key>
<string>com.apple.print.pm.PostScript</string>
<key>com.apple.print.ticket.modDate</key>
<date>2003-12-31T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>1</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.print.pm.PostScript</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key>
<array>
<real>0.0</real>
<real>0.0</real>
<real>734</real>
<real>576</real>
</array>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.print.pm.PostScript</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key>
<array>
<real>-18</real>
<real>-18</real>
<real>774</real>
<real>594</real>
</array>
<key>com.apple.print.ticket.client</key>
<string>com.apple.printingmanager</string>
<key>com.apple.print.ticket.modDate</key>
<date>2004-01-01T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>0</integer>
</dict>
</array>
</dict>
<key>com.apple.print.PaperInfo.ppd.PMPaperName</key>
<dict>
<key>com.apple.print.ticket.creator</key>
<string>com.apple.print.pm.PostScript</string>
<key>com.apple.print.ticket.itemArray</key>
<array>
<dict>
<key>com.apple.print.PaperInfo.ppd.PMPaperName</key>
<string>US Letter</string>
<key>com.apple.print.ticket.client</key>
<string>com.apple.print.pm.PostScript</string>
<key>com.apple.print.ticket.modDate</key>
<date>2003-12-31T12:34:56Z</date>
<key>com.apple.print.ticket.stateFlag</key>
<integer>1</integer>
</dict>
</array>
</dict>
<key>com.apple.print.ticket.APIVersion</key>
<string>00.20</string>
<key>com.apple.print.ticket.privateLock</key>
<false />
<key>com.apple.print.ticket.type</key>
<string>com.apple.print.PaperInfoTicket</string>
</dict>
<key>com.apple.print.ticket.APIVersion</key>
<string>00.20</string>
<key>com.apple.print.ticket.privateLock</key>
<false />
<key>com.apple.print.ticket.type</key>
<string>com.apple.print.PageFormatTicket</string>
</dict>
</plist>
NOTE: Due to potential privacy implications, any serial numbers or dates that were in the above XML data have been replaced with digit sequences (eg. 12345678, 12:34:56, etc).
Apple XML Data Typical Usage of Apple XML Data:
Most of the Apple XML data that I've seen appears to be related to print formatting. To me, it seems incredibly wasteful that this seemingly basic information should consume so many thousands of bytes of space in the file.
Typical Sizes of Apple XML Data:
Around 7,500 bytes (ie. major contributor of "extras").
Largest Apple XML Data:
The largest Apple XML Data segment I've found was around 8,000 bytes.


Text Comments
Examples of Text Comments from various JPG files (scroll down for remainder):
  • Copyright © 2006 by ...
  • ACD Systems Digital Imaging
  • File written by Adobe Photoshop 4.0
  • Compressed with JPEG Optimizer 3.03, www.xat.com
  • CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 70
  • The JPEG Wizard, Optimized by Pegasus Imaging Corp, http://www.jpg.com
  • File written with CompuPic(R) - Photodex Corporation (http://www.photodex.com)
  • Optimized by Pegasus Imaging Corp, http://www.jpg.com, Compression by Pegasus Imaging Corp.
  • This file was created by
    Graphic Workshop for Windows 1.1r

    from Alchemy Mindworks Inc.
    P.O. Box 500
    Beeton, Ontario
    L0G 1A0 CANADA

    This image may have been created by
    a party other than Alchemy Mindworks Inc.

    Use no hooks
  • PUBLIC INFORMATION OFFICE
    JET PROPULSION LABORATORY
    CALIFORNIA INSTITUTE OF TECHNOLOGY
    NATIONAL AERONAUTICS AND SPACE ADMINISTRATION
    PASADENA, CALIFORNIA 91109. TELEPHONE (2l3) 354-5011

    PHOTO CAPTION
    Aug. 13, 1981
    P-23883C/BW
    S-2-5

    NASA's Voyager 2 took this photograph of Saturn on July 21, 1981, when the spacecraft was 33.9 million kilometers (21 million miles) from the planet. Two bright, presumably convective cloud patterns are visible in the mid-northern hemisphere and several dark spoke-like features can be seen in the broad B-ring (left of planet). The moons Rhea and dione appear as blue dots to the south and southeast of Saturn, respectively. Voyager 2 made its closest approach to Saturn on Aug. 25, 1981. The Voyager project is managed for NASA by the Jet Propulsion Laboratory, Pasadena, Calif. This image was converted directly from digital data to GIF format.

    #####
Typical Usage of Text Comments:
Text comments are one of the most traditional and useful additions to an image, provided of course that the comment is actually viewed or otherwise accessed in some way. For normal web browsing, this is not the case.

One of the most obvious uses for a text comment is to add Copyright © information, yet this is very rarely done. Most websites nowadays prefer to brand their images with visible copyright text, usually in one of the bottom corners.

Instead, the majority of comments are simply a "signature" from the program that was used to create the image, which only serves the interests of those software companies. For example, a company could run a program that inspects images from all over the Internet to determine the "market penetration" of their particular program.
Most Common Text Comments:
During my research, the most common signature was probably from the various versions of "Adobe Photoshop", the program of choice for most serious graphics professionals. Next most common appeared to be from "gd-jpeg".

Interestingly, I also discovered signatures from many other JPG file optimization programs, which certainly seems to go against the spirit of "optimization"!
Typical Sizes of Text Comments:
Around 30 to 80 bytes; rarely larger (ie. very minor contributor of "extra").
Largest Text Comment:
One of the largest comments I encountered was within an image of Saturn, taken from NASA's Voyager 2 spacecraft. Although it was over 1,000 bytes long, it contained a lot of useful information about the image, so I kept the image with the comment intact for future reference.

I've also encountered numerous large comments that contained hundreds of blank or invalid characters, for which I haven't yet found an explanation.


Still To Come...
As I gradually find time to add to this section, the following "extras" will also be documented:
  • Photoshop Data
  • Digimarc Data
  • Padding after end of data
  • Other obscure "extras"


Related Links
Contact Ian Fieggen Contact Ian
Contribute some information or send me a JPG file with unusual "extras".
Download JPGExtra onto your computer Get JPGExtra
Download JPGExtra onto your computer.

Sponsored Links
Sponsor's ADs

Related Links

Sponsored Links