We are using Adobe Photoshop on a Mac to output JPEG image files. These image files need to be rendered on an embedded output device that we have no control over. It seems that the files output by Photoshop use the Exif header format, whereas the embedded device only understands the JFIF header format.
Strictly speaking, the JFIF and Exif standards are incompatible because they each
specify that their marker segment (APP0 or APP1, respectively) appears first. In practice, most JPEG files contain a JFIF marker segment that precedes the Exif header. This allows older readers to correctly handle the older format JFIF segment, while newer readers also decode the following Exif segment, being less strict about
requiring it to appear first.
As an example, here is the Mac-rendered JPEG:
whereas the PC-rendered JPEG (which works on the embedded device) has:
You can also see the Exif header coming after the JFIF one in the PC image above.
Is there a setting in Photoshop that allows us to export JPEGs with the JFIF preamble in the header?
EDIT: After using JPEG Snoop, the header information it decoded is as below.
The PC-generated image has an APP0 (JFIF) header:
*** Marker: APP0 (xFFE0) *** OFFSET: 0x00000002 length = 16 identifier = [JFIF] version = [1.1] density = 96 x 96 DPI (dots per inch) thumbnail = 0 x 0
The Mac-generated image has an APP1 (Exif) header:
*** Marker: APP1 (xFFE1) *** OFFSET: 0x00000002 length = 24 Identifier = [Exif] Identifier TIFF = 0x[49492A00 08000000] Endian = Intel (little) TAG Mark x002A = 0x002A EXIF IFD0 @ Absolute 0x00000014 Dir Length = 0x0000 Offset to Next IFD = 0x00000000
Then, after running the suggested XnView, the Mac header looks like:
*** Marker: APP0 (xFFE0) *** OFFSET: 0x00000002 length = 16 identifier = [JFIF] version = [1.1] density = 72 x 72 DPI (dots per inch) thumbnail = 0 x 0
And the embedded device can now read this Mac-generated JPEG.