使用程序的代码生成的图片,一般,质量都存在一点问题,尤其是如果图片上面有文字,那么,文字就会出现毛边,除非我们通过图片中的quantization表来控制图片,才能得到质量更好的图片。
联合图像专家组 (JPEG) 文件中的压缩由一组 quantization 表控制。 通常,会有两个表在每个文件: 一个用于亮度 (亮度) 信息,另一个用于 chrominance (颜色) 信息。 这些表是确定的离散的余弦值为 8x8 块 quantized 方式的 8x8 矩阵。
JPEG 质量系数用于生成一对 quantization 表。许多应用程序基于独立 JPEG 组 (IJG) 代码的生成相同的 quantization 表,为 IJG 引用代码。 但是,一些应用程序可能而是使用自定义 quantization 表。
JPEG 编码器 System.Drawing 中提供的编码器参数设置 JPEG 质量系数保存 JPEG 文件。 此编码器参数符合的 1 到 100 范围使用整数的约定。 此编码器参数的值将影响创建和使用 quantization 表与建议的质量系数。
相关的示例代码如下,保证生成的JPG质量上乘。
System.Drawing.Image newimage = System.Drawing.Image.FromFile("c:\\66.jpg");
Bitmap bt = new Bitmap(newimage);
Graphics g = Graphics.FromImage(bt);
(部分代码省略)
string lujing = @"c:\123.jpg";
//处理JPG质量的函数
int level = 100; //图像质量 1-100的范围
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == "image/jpeg")
ici = codec;
}
EncoderParameters ep = new EncoderParameters();
ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)level);
bt.Save(lujing, ici, ep);
bt.Dispose();