在程序中直接生產jpg圖片,質量不如原圖,是因為微軟的Image.Save方法保存到圖片壓縮質量為75,所以保存的圖片質量偏低了,要使生成的圖片質量有所提高就需要自己設定EncoderParameters類的質量參數和ImageCodecInfo類的圖片保存格式。
System.Drawing.Imaging.Encoder類來制定需要呈現的方式和各種參數,例如圖片質量參數,掃描方法參數,色度表參數,壓縮參數,顏色深度等等.到此,大家應該明白修改圖片質量的步驟和方法了.主要就是對System.Drawing.Imaging.Encoder設置,然后通過System.Drawing.Imaging.Encoder構造出來EncoderParameter類,將EncoderParameter傳遞給EncoderParameters數組,從而得到一個完全符合自己意愿的圖片!呵呵,說了一大堆.其實代碼很簡單:
先引入:using System.Drawing.Imaging;
/// <summary>
/// 按指定的壓縮質量及格式保存圖片(微軟的Image.Save方法保存到圖片壓縮質量為75)
/// </summary>
/// <param name="sourceImage">要保存的圖片的Image對象</param>
/// <param name="savePath">圖片要保存的絕對路徑</param>
/// <param name="imageQualityValue">圖片要保存的壓縮質量,該參數的值為1至100的整數,數值越大,保存質量越好</param>
/// <returns>保存成功,返回true;反之,返回false</returns>
public bool SaveImageForSpecifiedQuality(System.Drawing.Image sourceImage, string savePath, int imageQualityValue)
{
//以下代碼為保存圖片時,設置壓縮質量
EncoderParameters encoderParameters = new EncoderParameters();
EncoderParameter encoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, imageQualityValue);
encoderParameters.Param[0] = encoderParameter;
try
{
ImageCodecInfo[] ImageCodecInfoArray = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegImageCodecInfo = null;
for (int i = 0; i < ImageCodecInfoArray.Length; i++)
{
if (ImageCodecInfoArray[i].FormatDescription.Equals("JPEG"))
{
jpegImageCodecInfo = ImageCodecInfoArray[i];
break;
}
}
sourceImage.Save(savePath, jpegImageCodecInfo, encoderParameters);
return true;
}
catch
{
return false;
}
}
調用方法:
System.Drawing.Image image = System.Drawing.Image.FromFile("D://TestImage//0.jpg");
SaveImageForSpecifiedQuality(image, "D://TestImage//1.jpg", 100, ImageFormat.Jpeg);image.Dispose();