在C#中優(yōu)化JPEG壓縮級(jí)別和文件大小方式
C#優(yōu)化JPEG壓縮級(jí)別和文件大小
此示例可讓您檢查不同 JPEG 壓縮級(jí)別的圖像質(zhì)量。
使用文件菜單的打開命令加載圖像文件。
然后使用“JPEG 壓縮指數(shù) (CI)”組合框選擇壓縮級(jí)別。
程序?qū)D像保存到具有該壓縮級(jí)別的臨時(shí)文件中,并顯示生成的圖像和文件大小。
該程序的關(guān)鍵是以下SaveJpg方法
該方法使用給定的壓縮指數(shù)保存 JPG 文件。(這是您的工具包中一個(gè)非常有用的功能。)
// Save the file with a specific compression level. private void SaveJpg(Image image, string file_name, long compression) { try { EncoderParameters encoder_params = new EncoderParameters(1); encoder_params.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, compression); ImageCodecInfo image_codec_info = GetEncoderInfo("image/jpeg"); File.Delete(file_name); image.Save(file_name, image_codec_info, encoder_params); } catch (Exception ex) { MessageBox.Show("Error saving file '" + file_name + "'\nTry a different file name.\n" + ex.Message, "Save Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
此方法創(chuàng)建一個(gè)EncoderParameters對(duì)象
用于保存要發(fā)送給創(chuàng)建 JPG 文件的編碼器的信息。它填充了壓縮索引。
接下來(lái),該方法調(diào)用GetEncoderInfo
函數(shù)(稍后介紹)來(lái)獲取有關(guān) JPG 文件編碼器的信息。
它刪除以前的臨時(shí)文件并使用編碼器再次保存文件。
以下代碼顯示GetEncoderInfo方法
// Return an ImageCodecInfo object for this mime type. private ImageCodecInfo GetEncoderInfo(string mime_type) { ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders(); for (int i = 0; i <= encoders.Length; i++) { if (encoders[i].MimeType == mime_type) return encoders[i]; } return null; }
此代碼循環(huán)遍歷可用的編碼器,直到找到具有正確 MIME 類型的編碼器,在本例中為“image/jpeg”。
在本文頂部顯示的圖片中,壓縮級(jí)別為 30。它仍然產(chǎn)生不錯(cuò)的效果,壓縮文件的大小僅為原始文件大小的 18% 左右。結(jié)果因圖像而異。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#抓取網(wǎng)絡(luò)圖片保存到本地的實(shí)現(xiàn)方法
下面小編就為大家分享一篇C#抓取網(wǎng)絡(luò)圖片保存到本地的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01winform C#獲得Mac地址,IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān)的實(shí)例
下面小編就為大家?guī)?lái)一篇winform C#獲得Mac地址,IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01Winform實(shí)現(xiàn)鼠標(biāo)可穿透的窗體鏤空效果
這篇文章主要介紹了Winform實(shí)現(xiàn)鼠標(biāo)可穿透的窗體鏤空效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10C#中的應(yīng)用程序接口介紹及實(shí)現(xiàn),密封類與密封方法
今天小編就為大家分享一篇關(guān)于C#中的應(yīng)用程序接口介紹及實(shí)現(xiàn),密封類與密封方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10