《2022年jpg文件格式 .pdf》由会员分享,可在线阅读,更多相关《2022年jpg文件格式 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JPEG File Interchange Format Version 1.02 September 1, 1992 Eric Hamilton C-Cube Microsystems 1778 McCarthy Blvd. Milpitas, CA 95035 +1 408 944-6300 Fax: +1 408 944-6314 E-mail: ericc3.pla.ca.us JPEG File Interchange Format Version 1.02 Why a File Interchange Format JPEG File Interchange Format is a
2、 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
3、 of this simplified 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - format is to allow the exchange of JPEG compressed images. JPEG File Interchange Format features o Uses JPEG compression o Uses JPEG interchange format compressed image rep
4、resentation o PC or Mac or Unix workstation compatible o Standard color space: one or three components. For three components, YCbCr (CCIR 601-256 levels) o APP0 marker used to specify Units, X pixel density, Y pixel density, thumbnail o APP0 marker also used to specify JFIF extensions o APP0 marker
5、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 compatib
6、ility 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
7、 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
8、not use any resource forks, supported by the Macintosh but not by PCs or workstations. 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 c
9、omponent 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 名师资料总结 - - -
10、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 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
11、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 JFI
12、F 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,
13、 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 displaya
14、bility 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 identif
15、ies 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. 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
16、so as to occupy the full 256 levels of a 8-bit binary encoding. More precisely: Y = 256 * Ey Cb = 256 * ECb + 128 Cr = 256 * ECr + 128 where the Ey, ECb and ECb are defined as in CCIR 601. Since values of Ey have a range of 0 to 1.0 and those for ECb and ECr have a range of -0.5 to +0.5, Y , Cb, and
17、 Cr 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 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.
18、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. YCbCr to RGB Conversion RGB can be computed directly from YCbC
19、r (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) 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
20、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
21、encoding 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 c
22、omponents 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,
23、 i.e. the sample in the upper left corner, with respect to the 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - highest resolution component. The horizontal and vertical offsets of the first sample in a subsampled component, Xoffseti0,0 and
24、Yoffseti0,0, is defined to be Xoffseti0,0 = ( Nsamplesref / Nsamplesi ) / 2 - 0.5 Yoffseti0,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
25、 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 filte
26、r with an even number of taps (coefficients). A commonly used filter for 2:1 subsampling utilizes two taps (1/2,1/2). 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 Recommendat
27、ion 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. JPEG File Interchange Format Specification The syntax of a JFIF file conforms to the syntax
28、 for interchange format defined in Annex B of ISO DIS 10918-1. In addition, a JFIF file uses APP0 marker segments and constrains certain parameters in the frame header as defined below. XFF, SOI XFF, APP0, length, identifier, version, units, Xdensity, Ydensity, Xthumbnail, Ythumbnail, (RGB)n length
29、(2 bytes) Total APP0 field byte count, including the byte count value (2 bytes), but excluding the APP0 marker itself identifier (5 bytes) = X4A, X46, X49, X46, X00 This zero terminated string (JFIF) uniquely identifies this APP0 marker. This string shall have zero parity (bit 7=0). version (2 bytes
30、) = X0102 The most significant byte is used for major 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - revisions, the least significant byte for minor revisions. Version 1.02 is the current released revision. units (1 byte) Units for the X a
31、nd Y densities. units = 0: no units, X and Y specify the pixel aspect ratio units = 1: X and Y are dots per inch units = 2: X and Y are dots per cm Xdensity (2 bytes) Horizontal pixel density Ydensity (2 bytes) Vertical pixel density Xthumbnail (1 byte) Thumbnail horizontal pixel count Ythumbnail (1
32、 byte) Thumbnail vertical pixel count (RGB)n (3n bytes) Packed (24-bit) RGB values for the thumbnail pixels, n = Xthumbnail * Ythumbnail Optional JFIF extension APP0 marker segment(s) - see below o o o XFF, SOFn, length, frame parameters Number of components Nf = 1 or 3 1st component C1 = 1 = Y comp
33、onent 2nd component C2 = 2 = Cb component 3rd component C3 = 3 = Cr component o o o XFF, EOI JFIF Extension APP0 Marker Segment Immediately following the JFIF APP0 marker segment may be a JFIF extension APP0 marker. This JFIF extension APP0 marker segment may only be present for JFIF versions 1.02 a
34、nd above. The syntax of the JFIF extension APP0 marker segment is: XFF, APP0, length, identifier, extension_code, extension_data length (2 bytes) Total APP0 field byte count, including the byte count value (2 bytes), but excluding the APP0 marker itself identifier (5 bytes) = X4A, X46, X58, X58, X00
35、 This zero terminated string (JFXX) uniquely identifies this APP0 marker. This string shall have zero parity (bit 7=0). extension_code (1 byte) = Code which identifies the extension. In this version, the following extensions are defined: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
36、理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - = X10 Thumbnail coded using JPEG = X11 Thumbnail stored using 1 byte/pixel = X13 Thumbnail stored using 3 bytes/pixel extension_data (variable) = The specification of the remainder of the JFIF extension APP0 marker segment varies with the extension. See
37、below for a specification of extension_data for each extension. JFIF Extension: Thumbnail coded using JPEG This extension supports thumbnails compressed using JPEG. The compressed thumbnail immediately follows the extension_code (X10) in the extension_data field and the length of the compressed data
38、 must be included in the JFIF extension APP0 marker length field. The syntax of the extension_data field conforms to the syntax for interchange format defined in Annex B of ISO DIS 10918-1. However, no JFIF or JFXX marker segments shall be present. As in the full resolution image of the JFIF file, t
39、he syntax of extension_data constrains parameters in the frame header as defined below: XFF, SOI o o o XFF, SOFn, length, frame parameters Number of components Nf = 1 or 3 1st component C1 = 1 = Y component 2nd component C2 = 2 = Cb component 3rd component C3 = 3 = Cr component o o o XFF, EOI JFIF E
40、xtension: Thumbnail stored using one byte per pixel This extension supports thumbnails stored using one byte per pixel and a color palette in the extension_data field. The syntax of extension_data is: Xthumbnail (1 byte) Thumbnail horizontal pixel count Ythumbnail (1 byte) Thumbnail vertical pixel c
41、ount palette (768 bytes) 24-bit RGB pixel values for the color palette. The RGB values define the colors represented by 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - each value of an 8-bit binary encoding (0 - 255). (pixel)n (n bytes) 8-b
42、it values for the thumbnail pixels n = Xthumbnail * Ythumbnail JFIF Extension: Thumbnail stored using three bytes per pixel This extension supports thumbnails stored using three bytes per pixel in the extension_data field. The syntax of extension_data is: Xthumbnail (1 byte) Thumbnail horizontal pix
43、el count Ythumbnail (1 byte) Thumbnail vertical pixel count (RGB)n (3n bytes) Packed (24-bit) RGB values for the thumbnail pixels, n = Xthumbnail * Ythumbnail Useful tips o you can identify a JFIF file by looking for the following sequence: XFF, SOI, XFF, APP0, , JFIF, X00. o if you use APP0 elsewhe
44、re, be sure not to have the strings JFIF or JFXX right after the APP0 marker. o if you do not want to include a thumbnail, just program Xthumbnail = Ythumbnail = 0. o be sure to check the version number in the special APP0 field. In general, if the major version number of the JFIF file matches that
45、supported by the decoder, the file will be decodable. o if you only want to specify a pixel aspect ratio, put 0 for the units field in the special APP0 field. Xdensity and Ydensity can then be programmed for the desired aspect ratio. Xdensity = 1, Ydensity = 1 will program a 1:1 aspect ratio. Xdensity and Ydensity should always be non-zero. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -
限制150内