|
|
|
JPG File Technical Information
|
JPGExtra's only job is to remove "extras" without going into details. For those curious about what those extras
are and where they come from, this page gives some more in-depth technical information, plus highlights some
extraordinary examples that I've found during my research.
|
|
NEW RELEASE!
Version 2 has just been publicly released!
|
|
Text Comments
|
Examples of Text Comments (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 web sites 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, the reasoning
behind which I can only guess!
|
|
Thumbnail Images
|
s.jpg)


|
Example Thumbnail Data from one image:
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.
|
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 web site that allows visitors to contribute photos, it's entirely possible for an
otherwise innocent looking JPG file to contain a heinous hidden payload.
|
|
Exif Digital Camera Data
|
|
Example decoded Exif Data from one image (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 dates & times that were in the above Exif data have
been replaced with digit sequences (eg. 12:34:56).
|
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!
|
|
ICC Color Profile Data
|
|
Example ICC Data from one image (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
|
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 image (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).
|
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, there was little difference between the smallest and largest amounts because they seem to be "padded"
to a minimum size of 4,500 bytes. The majority of JPG files containing XMP Data segments 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.
|
|
Still To Come...
|
As I gradually find time to add to this section, the following "extras" will also be documented:
- Apple XML Data (around 7,500 bytes)
- Photoshop Data
- Digimarc Data
- Padding after end of data
- Other obscure "extras"
|
This page last updated: 04-Jul-2008. Copyright © 2006-2008 by
Ian W. Fieggen. All rights reserved.
|
|