Select the product you need help with
- Internet Explorer
- Windows Phone
- More products
Determine the JPEG quality factor by using Visual C# .NET
Article ID: 324790 - View products that this article applies to.
This article was previously published under Q324790
For a Microsoft Visual Basic .NET version of this article, see 324788
This article refers to the following Microsoft .NET Framework Class Library namespaces:
Compression in a Joint Photographic Experts Group (JPEG) file is controlled by a set of quantization tables. Typically, there are two such tables in each file: one for the luminance (brightness) information and the other for the chrominance (color) information. These tables are 8x8 matrices that determine how the 8x8 blocks of discrete cosine coefficients are quantized.
Most applications allow you to specify a number, called the JPEG quality factor, to control the compression level. This number typically has a range from 0 or 1, which results in more compression and a smaller file, to 100, which results in almost no compression and a larger file. However, this number is not stored in the file.
The JPEG quality factor is used to generate a pair of quantization tables. Many applications that are based on the Independent JPEG Group (IJG) code generate the same quantization tables as the IJG reference code. However, some applications may use custom quantization tables instead.
For more information about how the quality factor is used to influence the quantization tables, see the JPEG specification and the IJG reference code, both of which are available through the "References" section of this article.
Set the JPEG Quality FactorThe JPEG encoder in System.Drawing gives an encoder parameter for setting the JPEG quality factor when you save a JPEG file. This encoder parameter conforms to the convention of using an integer with a range of 1 to 100. The value of this encoder parameter influences the creation and use of quantization tables related to the suggested quality factor.
The following code sample shows how this encoder parameter is used to save a JPEG file with a specified quality factor:
Retrieve the Quality Factor from a JPEG FileThe quality factor is not stored directly in the JPEG file, so you cannot read the quality factor from the file. However, you can read the quantization tables from the JPEG file by using the PropertyItems property on the Image class. But even with the quantization tables, you cannot always determine a quality factor.
You might be able to determine the quality factor by comparing the quantization tables against the "standard" IJG-generated tables. However, because some applications may use custom tables, you will not always find a match. For more information about the quantization tables, see the "References" section.
For more information, visit the following organization Web sites:
Home site of the JPEG and JBIG committees
Independent JPEG Group
Article ID: 324790 - Last Review: May 10, 2006 - Revision: 2.4