在C#中優(yōu)化JPEG壓縮級別和文件大小方式
C#優(yōu)化JPEG壓縮級別和文件大小
此示例可讓您檢查不同 JPEG 壓縮級別的圖像質量。
使用文件菜單的打開命令加載圖像文件。
然后使用“JPEG 壓縮指數 (CI)”組合框選擇壓縮級別。
程序將圖像保存到具有該壓縮級別的臨時文件中,并顯示生成的圖像和文件大小。

該程序的關鍵是以下SaveJpg方法
該方法使用給定的壓縮指數保存 JPG 文件。(這是您的工具包中一個非常有用的功能。)
// 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)建一個EncoderParameters對象
用于保存要發(fā)送給創(chuàng)建 JPG 文件的編碼器的信息。它填充了壓縮索引。
接下來,該方法調用GetEncoderInfo函數(稍后介紹)來獲取有關 JPG 文件編碼器的信息。
它刪除以前的臨時文件并使用編碼器再次保存文件。
以下代碼顯示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”。
在本文頂部顯示的圖片中,壓縮級別為 30。它仍然產生不錯的效果,壓縮文件的大小僅為原始文件大小的 18% 左右。結果因圖像而異。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
System.Data.OleDb.OleDbException: 未指定的錯誤的完美解決方法
本文給大家?guī)砣N有關System.Data.OleDb.OleDbException: 未指定的錯誤的完美解決方法,每種方法都很不錯,需要的朋友可以參考下2016-09-09
C#使用Spire.XLS實現將Excel轉換成高質量JPG
在日常辦公開發(fā)中,經常遇到需要將?Excel?表格轉換為圖片的需求,本文主要介紹了如何使用?Spire.XLS?庫,配合?C#?代碼實現高質量?Excel?轉?JPG,感興趣的小伙伴可以了解下2026-04-04

