The document discusses the JPEG File Interchange Format (JFIF), which defines a minimal file format for exchanging JPEG compressed images between different platforms and applications in a compatible way. It specifies features like using JPEG compression, YCbCr color space, and including metadata in APP0 markers to identify the file format and provide additional image information like pixel density and thumbnails. Color space conversions between RGB and YCbCr are also defined.
1 of 10
Download to read offline
More Related Content
Jfif3 restrict1108218813
1. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
Please fill and submit the form below to read this document. You must use Adobe
Reader with Javascript enabled.
----------------------------------------------------------------------------------------------------------------
First Name:
Last Name:
Email:
Password:
Submit
----------------------------------------------------------------------------------------------------------------
2. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
JPEG File Interchange Format
Version 1.02
September 1, 1992
Restricted content
Eric Hamilton
C-Cube Microsystems
1778 McCarthy Blvd.
Milpitas, CA 95035
+1 408 944-6300
Fax: +1 408 944-6314
E-mail: eric@c3.pla.ca.us
3. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
JPEG File Interchange Format
Version 1.02
Restricted content
1
Why a File Interchange Format
JPEG File Interchange Format is a minimal file format which enables JPEG bitstreams to
be exchanged between a wide variety of platforms and applications. This minimal format
does not include any of the advanced features found in the TIFF JPEG specification or any
application specific file format. Nor should it, for the only purpose of this simplified format
is to allow the exchange of JPEG compressed images.
JPEG File Interchange Format features
? Uses JPEG compression
? Uses JPEG interchange format compressed image representation
? PC or Mac or Unix workstation compatible
? Standard color space: one or three components. For three components, YCbCr
(CCIR 601-256 levels)
? APP0 marker used to specify Units, X pixel density, Y pixel density, thumbnail
? APP0 marker also used to specify JFIF extensions
? APP0 marker also used to specify application-specific information
JPEG Compression
Although any JPEG process is supported by the syntax of the JPEG File Interchange
Format (JFIF) it is strongly recommended that the JPEG baseline process be used for the
purposes of file interchange. This ensures maximum compatibility with all applications
supporting JPEG. JFIF conforms to the JPEG Draft International Standard (ISO DIS
10918-1).
The JPEG File Interchange Format is entirely compatible with the standard
JPEG interchange format; the only additional requirement is the mandatory presence
of the APP0 marker right after the SOI marker. Note that JPEG interchange format
requires (as does JFIF) that all table specifications used in the encoding process be coded in
the bitstream prior to their use.
Compatible across platforms
The JPEG File Interchange Format is compatible across platforms: for example, it does not
use any resource forks, supported by the Macintosh but not by PCs or workstations.
4. Your temporary license key is expired.
Please replace it with permanent JPEG license File Interchange key.
Format, Version 1.02
Please contact support@bitmiracle.com if you have any questions.
Restricted content
2
Standard color space
The color space to be used is YCbCr as defined by CCIR 601 (256 levels). The RGB
components calculated by linear conversion from YCbCr shall not be gamma corrected
(gamma = 1.0). If only one component is used, that component shall be Y.
APP0 marker used to identify JPEG FIF
The APP0 marker is used to identify a JPEG FIF file. The JPEG FIF APP0 marker is
mandatory right after the SOI marker.
The JFIF APP0 marker is identified by a zero terminated string: "JFIF". The APP0 can be
used for any other purpose by the application provided it can be distinguished from the
JFIF APP0.
The JFIF APP0 marker provides information which is missing from the JPEG stream:
version number, X and Y pixel density (dots per inch or dots per cm), pixel aspect ratio
(derived from X and Y pixel density), thumbnail.
APP0 marker used to specify JFIF extensions
Additional APP0 marker segment(s) can optionally be used to specify JFIF extensions. If
used, these segment(s) must immediately follow the JFIF APP0 marker. Decoders should
skip any unsupported JFIF extension segments and continue decoding.
The JFIF extension APP0 marker is identified by a zero terminated string: "JFXX". The
JFIF extension APP0 marker segment contains a 1-byte code which identifies the
extension. This version, version 1.02, has only one extension defined: an extension for
defining thumbnails stored in formats other than 24-bit RGB.
APP0 marker used for application-specific information
Additional APP0 marker segments can be used to hold application-specific information
which does not affect the decodability or displayability of the JFIF file. Application-specific
APP0 marker segments must appear after the JFIF APP0 and any JFXX APP0
segments. Decoders should skip any unrecognized application-specific APP0 segments.
Application-specific APP0 marker segments are identified by a zero terminated string which
identifies the application (not "JFIF" or “JFXX”). This string should be an organization
name or company trademark. Generic strings such as dog, cat, tree, etc. should not be
used.
5. Your temporary license key is expired.
Please replace it with permanent JPEG license File Interchange key.
Format, Version 1.02
Please contact support@bitmiracle.com if you have any questions.
Conversion to and from RGB
Y, Cb, and Cr are converted from R, G, and B as defined in CCIR Recommendation 601
but are normalized so as to occupy the full 256 levels of a 8-bit binary encoding. More
precisely:
Y = 256 * E'y
Cb = 256 * [ E'Cb ] + 128
Cr = 256 * [ E'Cr ] + 128
where the E'y, E'Cb and E'Cb are defined as in CCIR 601. Since values of E'y have a
range of 0 to 1.0 and those for E 'Cb and E 'Cr have a range of -0.5 to +0.5, Y, Cb, and
Cr must be clamped to 255 when they are maximum value.
RGB to YCbCr Conversion
YCbCr (256 levels) can be computed directly from 8-bit RGB as follows:
Y = 0.299 R + 0.587 G + 0.114 B
Cb = - 0.1687 R - 0.3313 G + 0.5 B + 128
Cr = 0.5 R - 0.4187 G - 0.0813 B + 128
NOTE - Not all image file formats store image samples in the order R0, G0,
B0, ... Rn, Gn, Bn. Be sure to verify the sample order before converting
an RGB file to JFIF.
Restricted content
YCbCr to RGB Conversion
RGB can be computed directly from YCbCr (256 levels) as follows:
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)
3
Image Orientation
In JFIF files, the image orientation is always top-down. This means that the first image
samples encoded in a JFIF file are located in the upper left hand corner of the image and
encoding proceeds from left to right and top to bottom. Top-down orientation is used for
both the full resolution image and the thumbnail image.
The process of converting an image file having bottom-up orientation to JFIF must include
inverting the order of all image lines before JPEG encoding.
6. Your temporary license key is expired.
Please replace it with permanent JPEG license File Interchange key.
Format, Version 1.02
Please contact support@bitmiracle.com if you have any questions.
Spatial Relationship of Components
Specification of the spatial positioning of pixel samples within components relative to the
samples of other components is necessary for proper image post processing and accurate
image presentation. In JFIF files, the position of the pixels in subsampled components are
defined with respect to the highest resolution component. Since components must be
sampled orthogonally (along rows and columns), the spatial position of the samples in a
given subsampled component may be determined by specifying the horizontal and vertical
offsets of the first sample, i.e. the sample in the upper left corner, with respect to the
highest resolution component.
The horizontal and vertical offsets of the first sample in a subsampled component,
Xoffseti[0,0] and Yoffseti[0,0], is defined to be
Xoffseti[0,0] = ( Nsamplesref / Nsamplesi ) / 2 - 0.5
Yoffseti[0,0] = ( Nlinesref / Nlinesi ) / 2 - 0.5
where
Nsamplesref is the number of samples per line in the largest component,
Nsamplesi is the number of samples per line in the ith component,
Nlinesref is the number of lines in the largest component,
Nlinesi is the number of lines in the ith component.
Proper subsampling of components incorporates an anti-aliasing filter which reduces the
spectral bandwidth of the full resolution components. Subsampling can easily be
accomplished using a symmetrical digital filter with an even number of taps (coefficients).
A commonly used filter for 2:1 subsampling utilizes two taps (1/2,1/2).
As an example, consider a 3 component image which is comprised of components having
the following dimensions:
Restricted content
Component 1: 256 samples, 288 lines
Component 2: 128 samples, 144 lines
Component 3: 64 samples, 96 lines
In a JFIF file, centers of the samples are positioned as illustrated below:
4
Component 1
Component 2
Component 3
NOTE - This definition is compatible with industry standards such as Postcript
Level 2 and QuickTime. This defintition is not compatible with the conventions
used by CCIR Recommendation 601-1 and other digital video formats. For these
formats, pre-processing of the chrominance components is necessary prior to
compression in order to ensure accurate reconstruction of the compressed image.
7. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
Restricted content
Contents of this page was not read because of trial version or your current license restrictions.
8. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
Restricted content
Contents of this page was not read because of trial version or your current license restrictions.
9. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
Restricted content
Contents of this page was not read because of trial version or your current license restrictions.
10. Your temporary license key is expired.
Please replace it with permanent license key.
Please contact support@bitmiracle.com if you have any questions.
Restricted content
Contents of this page was not read because of trial version or your current license restrictions.