Dzwebs.Net

撰写电脑技术杂文十余年

C#代码直接生成质量更佳的JPG图片

Admin | 2013-2-20 9:47:10 | 被阅次数 | 9380

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  使用程序的代码生成的图片,一般,质量都存在一点问题,尤其是如果图片上面有文字,那么,文字就会出现毛边,除非我们通过图片中的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();


该杂文来自: 网站开发杂文

上一篇:asp.net sessionState如何添加

下一篇:net c#代码读取服务器端的Excel内容显示到客户端

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计