Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/index.php on line 54

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebStart.php on line 63

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 94

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 97

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 100

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 103

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Defines.php on line 187

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 115

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 134

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 137

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 139

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 144

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 145

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/LocalSettings.php on line 153

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 150

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/WebStart.php on line 157

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 381

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 382

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 383

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Setup.php on line 384

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/languages/Language.php on line 20

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/Skin.php on line 155

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: include(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/resourceloader/ResourceLoader.php on line 201

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require_once(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/json/FormatJson.php on line 12

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007
JFIF - Just Solve the File Format Problem

JFIF

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007
(Specifications)
m (Add Kaitai Struct schema)
 
(19 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
|formattype=electronic
 
|formattype=electronic
 
|subcat=Graphics
 
|subcat=Graphics
|extensions={{ext|jpg}}<br>{{ext|jpeg}}<br>{{ext|jpe}}<br>{{ext|jfif}}<br>{{ext|jfi}}
+
|extensions={{ext|jpg}}, {{ext|jpeg}}, {{ext|jfif}}, {{ext|jfi}}
 
|mimetypes={{mimetype|image/jpeg}}
 
|mimetypes={{mimetype|image/jpeg}}
|pronom={{PRONOM|fmt/44}}
+
|locfdd={{LoCFDD|fdd000018}}
 +
|pronom={{PRONOM|fmt/42}}, {{PRONOM|fmt/43}}, {{PRONOM|fmt/44}}
 +
|wikidata={{wikidata|Q26329975}}
 +
|kaitai struct=jpeg
 +
|released=1991
 
}}
 
}}
'''JFIF''' (JPEG File Interchange Format) is a standard that defines a portable subset of the [[JPEG]] interchange format. Most of the JPEG files in existence conform to JFIF.
+
'''JFIF''' ('''JPEG File Interchange Format''') is a standard that defines a portable subset of the [[JPEG]] file format. Most of the JPEG files in existence conform to JFIF.
  
 
JFIF defines JPEG application segments which serve to identify JFIF files, and to store a small amount of metadata: the pixel density, and a thumbnail image.
 
JFIF defines JPEG application segments which serve to identify JFIF files, and to store a small amount of metadata: the pixel density, and a thumbnail image.
  
 
The presence of a JFIF segment implies that:
 
The presence of a JFIF segment implies that:
* If the image has three components, its color format is YCbCr. If it has one component, its color format is grayscale.
+
* If the image has three components, its color format is YCbCr, using a conversion formula given in the specification. If it has one component, its color format is grayscale.
 
* The image has a particular orientation.
 
* The image has a particular orientation.
 
* If the image is subsampled, it uses a particular subsampling position.
 
* If the image is subsampled, it uses a particular subsampling position.
  
== History ==
+
JFIF was developed based on a draft version of the JPEG standard, which is how it can predate JPEG's official 1992 publication date.
  
* JFIF 1.00 (PRONOM: [http://www.nationalarchives.gov.uk/PRONOM/fmt/42 fmt/42]) was the original version.
+
== Disambiguation ==
 +
Don't confuse '''JPEG File Interchange Format''' with '''JPEG Interchange Format'''. The former is '''JFIF'''; the latter means approximately the same thing as [[JPEG]].
  
* JFIF 1.01 (December 10, 1991; PRONOM: [http://www.nationalarchives.gov.uk/PRONOM/fmt/43 fmt/43]) may have changed the subsampling position to ''centered''.
+
== Identification ==
 +
Valid JFIF files begin with  <code>FF D8 FF E0 ?? ?? 'J' 'F' 'I' 'F' 00</code>. Some technically-invalid files exist in which the JFIF segment has been relocated, and for them this signature will not match.
  
* JFIF 1.02 (September 1, 1992; PRONOM: [http://www.nationalarchives.gov.uk/PRONOM/fmt/44 fmt/44]) added an optional JFXX segment, capable of storing a compressed thumbnail image.
+
== Versions ==
 +
 
 +
* The original version (let's call it JFIF 1.00) must have existed in some form, but little seems to be known about it.
 +
 
 +
* JFIF 1.01 (1991-12-10) may have changed the subsampling position to ''centered''.
 +
 
 +
* JFIF 1.02 (1992-09-01) added an optional JFXX segment, capable of storing a compressed thumbnail image.
 +
 
 +
* JFIF 2.xx (~2014): Starting with version 9a, the Independent JPEG Group's software supports "JFIF 2.01" (e.g. using <code>cjpeg -bgycc</code>), which apparently implies that the image uses "big gamut YCC". We have not located any specifications for this JFIF version. Note that some buggy JFIF encoders have been known to label a file as version 2.01, when 1.02 was intended.
  
 
== Specifications ==
 
== Specifications ==
* [ftp://ftp.tnt.uni-hannover.de/pub/tmp/visualization/graphic-formats/jpeg.jfif.doc.1.01.ps.Z JFIF version 1.01]
+
* JFIF 1.02:
* [http://www.w3.org/Graphics/JPEG/jfif3.pdf JFIF version 1.02]
+
** [https://www.w3.org/Graphics/JPEG/jfif3.pdf jfif3.pdf]
* ITU Recommendation T.871
+
** [http://www.textfiles.com/programming/FORMATS/jpegjfif JFIF description (Eric Hamilton, 1992-09-01)]
 +
** [https://web.archive.org/web/20011026132227/http://www.ijg.org/files/ Archive of www.ijg.org/files/] → jfif.ps.gz, jfif.txt.gz
 +
* Based on JFIF 1.02:
 +
** [https://www.itu.int/rec/T-REC-T.871/en ITU-T Rec. T.871]
 +
** [https://www.ecma-international.org/publications/techreports/E-TR-098.htm ECMA TR/98]
 +
** [https://www.iso.org/standard/54989.html ISO/IEC 10918-5:2013] (Not free to download)
 +
* [https://entropymine.com/archived/jpeg.jfif.doc.1.01.ps.Z JFIF 1.01]
 +
 
 +
== Links ==
 +
* [[Wikipedia:JPEG File Interchange Format|Wikipedia article]]
 +
* {{EGFF|jpeg|JPEG File Interchange Format File Format Summary}}, from the [[Encyclopedia of Graphics File Formats]]
 +
* [https://github.com/corkami/pics/blob/master/binary/JPG.png JFIF poster]
 +
 
 +
[[Category:JPEG]]

Latest revision as of 17:49, 26 December 2024

File Format
Name JFIF
Ontology
Extension(s) .jpg, .jpeg, .jfif, .jfi
MIME Type(s) image/jpeg
LoCFDD fdd000018
PRONOM fmt/42, fmt/43, fmt/44
Wikidata ID Q26329975
Kaitai Struct Spec jpeg.ksy
Released 1991

JFIF (JPEG File Interchange Format) is a standard that defines a portable subset of the JPEG file format. Most of the JPEG files in existence conform to JFIF.

JFIF defines JPEG application segments which serve to identify JFIF files, and to store a small amount of metadata: the pixel density, and a thumbnail image.

The presence of a JFIF segment implies that:

  • If the image has three components, its color format is YCbCr, using a conversion formula given in the specification. If it has one component, its color format is grayscale.
  • The image has a particular orientation.
  • If the image is subsampled, it uses a particular subsampling position.

JFIF was developed based on a draft version of the JPEG standard, which is how it can predate JPEG's official 1992 publication date.

Contents

[edit] Disambiguation

Don't confuse JPEG File Interchange Format with JPEG Interchange Format. The former is JFIF; the latter means approximately the same thing as JPEG.

[edit] Identification

Valid JFIF files begin with FF D8 FF E0 ?? ?? 'J' 'F' 'I' 'F' 00. Some technically-invalid files exist in which the JFIF segment has been relocated, and for them this signature will not match.

[edit] Versions

  • The original version (let's call it JFIF 1.00) must have existed in some form, but little seems to be known about it.
  • JFIF 1.01 (1991-12-10) may have changed the subsampling position to centered.
  • JFIF 1.02 (1992-09-01) added an optional JFXX segment, capable of storing a compressed thumbnail image.
  • JFIF 2.xx (~2014): Starting with version 9a, the Independent JPEG Group's software supports "JFIF 2.01" (e.g. using cjpeg -bgycc), which apparently implies that the image uses "big gamut YCC". We have not located any specifications for this JFIF version. Note that some buggy JFIF encoders have been known to label a file as version 2.01, when 1.02 was intended.

[edit] Specifications

[edit] Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: Cannot modify header information - headers already sent in /usr/local/www/mediawiki/includes/WebResponse.php on line 38

Warning: require(): Unable to allocate memory for pool. in /usr/local/www/mediawiki/includes/AutoLoader.php on line 1007