程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#提高保存jpg圖像的質量

C#提高保存jpg圖像的質量

編輯:C#入門知識

      在程序中直接生成的jpg圖像,漢字有毛邊,經過一番搜索,在msdn上發現了下面控制jpg質量系數的文章,修改後試了一下,效果確實比前面強多了。原理我也不大懂,把代碼貼出來,與大家共享。
      聯合圖像專家組 (JPEG) 文件中的壓縮由一組 quantization 表控制。 通常,會有兩個表在每個文件: 一個用於亮度 (亮度) 信息,另一個用於 chrominance (顏色) 信息。 這些表是確定的離散的余弦值為 8x8 塊 quantized 方式的 8x8 矩陣。

     JPEG 質量系數用於生成一對 quantization 表。 許多應用程序基於獨立 JPEG 組 (IJG) 代碼的生成相同的 quantization 表,為 IJG 引用代碼。 但是,一些應用程序可能而是使用自定義 quantization 表。
     JPEG 編碼器 System.Drawing 中提供的編碼器參數設置 JPEG 質量系數保存 JPEG 文件。 此編碼器參數符合的 1 到 100 范圍使用整數的約定。 此編碼器參數的值將影響創建和使用 quantization 表與建議的質量系數。

     具體代碼如下:

            System.Drawing.Image newimage = System.Drawing.Image.FromFile("c:\00.jpg");        
            Bitmap bt = new Bitmap(newimage);
            Graphics g = Graphics.FromImage(bt);

            (中間略去在畫布上繪圖的代碼)

            string lujing = @"c:1.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();

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved