.Net上傳圖片壓縮質量,不改變尺寸


圖片上傳有很多情況需要考慮,例如:生成縮略圖、壓縮尺寸、壓縮質量、壓縮尺寸質量、添加水印等等常見情況。最近遇到圖片質量壓縮不改變大小的問題,參考:聽浪

#region 圖片壓縮

/// <summary>

/// 圖片壓縮(降低質量以減小文件的大小)

/// </summary>

/// <param name="srcBitMap">傳入的Bitmap對象</param>

/// <param name="destFile">壓縮后的圖片保存路徑</param>

/// <param name="level">壓縮等級,0到100,0 最差質量,100 最佳</param>

public static void Compress(Bitmap srcBitMap, string destFile, long level)

{

Stream s = new FileStream(destFile, FileMode.Create);

Compress(srcBitMap, s, level);

s.Close();

}

/// <summary>

/// 編碼信息

/// </summary>

/// <param name="mimeType"></param>

/// <returns></returns>

private static ImageCodecInfo GetEncoderInfo(String mimeType)

{

int j;

ImageCodecInfo[] encoders;

encoders = ImageCodecInfo.GetImageEncoders();

for (j = 0; j < encoders.Length; ++j)

{

if (encoders[j].MimeType == mimeType)

return encoders[j];

}

return null;

}

/// <summary>

/// 圖片壓縮(降低質量以減小文件的大小)

/// </summary>

/// <param name="srcBitmap">傳入的Bitmap對象</param>

/// <param name="destStream">壓縮后的Stream對象</param>

/// <param name="level">壓縮等級,0到100,0 最差質量,100 最佳</param>

private static void Compress(Bitmap srcBitmap, Stream destStream, long level)

{

ImageCodecInfo myImageCodecInfo;

Encoder myEncoder;

EncoderParameter myEncoderParameter;

EncoderParameters myEncoderParameters;

// Get an ImageCodecInfo object that represents the JPEG codec.

myImageCodecInfo = GetEncoderInfo("image/jpeg");

// Create an Encoder object based on the GUID

// for the Quality parameter category.

myEncoder = Encoder.Quality;

// Create an EncoderParameters object.

// An EncoderParameters object has an array of EncoderParameter

// objects. In this case, there is only one

// EncoderParameter object in the array.

myEncoderParameters = new EncoderParameters(1);

// Save the bitmap as a JPEG file with 給定的 quality level

myEncoderParameter = new EncoderParameter(myEncoder, level);

myEncoderParameters.Param[0] = myEncoderParameter;

srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);

}

#endregion

參考:聽浪 http://www.cnblogs.com/ainidewen/p/4556543.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM