大众计算机学习网欢迎诸位!收藏本站注 册登 陆
常用教程:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 教程 > 文章页

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

Admin | 2013-2-20 9:47:10 | ReadNums | 5176 | 标签 asp.net | 打印本页
     

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


问题未解决:在线咨询

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日