C#中按指定質(zhì)量保存圖片的實(shí)例代碼
在程序中直接生產(chǎn)jpg圖片,質(zhì)量不如原圖,是因?yàn)槲④浀腎mage.Save方法保存到圖片壓縮質(zhì)量為75,所以保存的圖片質(zhì)量偏低了,要使生成的圖片質(zhì)量有所提高就需要自己設(shè)定EncoderParameters類的質(zhì)量參數(shù)和ImageCodecInfo類的圖片保存格式。
System.Drawing.Imaging.Encoder類來制定需要呈現(xiàn)的方式和各種參數(shù),例如圖片質(zhì)量參數(shù),掃描方法參數(shù),色度表參數(shù),壓縮參數(shù),顏色深度等等.到此,大家應(yīng)該明白修改圖片質(zhì)量的步驟和方法了.主要就是對System.Drawing.Imaging.Encoder設(shè)置,然后通過System.Drawing.Imaging.Encoder構(gòu)造出來EncoderParameter類,將EncoderParameter傳遞給EncoderParameters數(shù)組,從而得到一個(gè)完全符合自己意愿的圖片!呵呵,說了一大堆.其實(shí)代碼很簡單:
先引入:using System.Drawing.Imaging;
/// <summary>
/// 按指定的壓縮質(zhì)量及格式保存圖片(微軟的Image.Save方法保存到圖片壓縮質(zhì)量為75)
/// </summary>
/// <param name="sourceImage">要保存的圖片的Image對象</param>
/// <param name="savePath">圖片要保存的絕對路徑</param>
/// <param name="imageQualityValue">圖片要保存的壓縮質(zhì)量,該參數(shù)的值為1至100的整數(shù),數(shù)值越大,保存質(zhì)量越好</param>
/// <returns>保存成功,返回true;反之,返回false</returns>
public bool SaveImageForSpecifiedQuality(System.Drawing.Image sourceImage, string savePath, int imageQualityValue)
{
//以下代碼為保存圖片時(shí),設(shè)置壓縮質(zhì)量
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;
}
}
調(diào)用方法:
System.Drawing.Image image = System.Drawing.Image.FromFile("D:\\TestImage\\0.jpg");
SaveImageForSpecifiedQuality(image, "D:\\TestImage\\1.jpg", 100, ImageFormat.Jpeg);image.Dispose();
相關(guān)文章
C#實(shí)現(xiàn)動態(tài)數(shù)據(jù)繪圖graphic的方法示例
這篇文章主要介紹了C#實(shí)現(xiàn)動態(tài)數(shù)據(jù)繪圖graphic的方法,結(jié)合實(shí)例形式分析了C#根據(jù)動態(tài)數(shù)據(jù)繪制2D數(shù)據(jù)表格的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
C#中使用基數(shù)排序算法對字符串進(jìn)行排序的示例
Radix Sort基數(shù)排序是非比較型的排序算法,其時(shí)間復(fù)雜度是O(k·n),n為元素個(gè)數(shù),為數(shù)字位數(shù),這里我們就來看一下C#中使用基數(shù)排序算法堆字符串進(jìn)行排序的示例2016-06-06
C#實(shí)現(xiàn)遠(yuǎn)程關(guān)閉和重啟計(jì)算機(jī)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)遠(yuǎn)程關(guān)閉和重啟計(jì)算機(jī)的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
C# CultureInfo之常用InvariantCulture案例詳解
這篇文章主要介紹了C# CultureInfo之常用InvariantCulture案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

