C# 進(jìn)行圖片壓縮的示例代碼(對(duì)jpg壓縮效果最好)
更新時(shí)間:2020年11月18日 09:13:58 作者:踏平扶桑
這篇文章主要介紹了C# 進(jìn)行圖片壓縮的示例代碼,幫助大家更好的利用c# 處理圖片,提高辦公效率,感興趣的朋友可以了解下
直接上代碼
public static class ImageCompress { /// <summary> /// 圖片壓縮 /// </summary> /// <param name="imagePath">圖片文件路徑</param> /// <param name="targetFolder">保存文件夾</param> /// <param name="quality">壓縮質(zhì)量</param> /// <param name="fileSuffix">壓縮后的文件名后綴(防止直接覆蓋原文件)</param> public static void CompressionImage(string imagePath, string targetFolder, long quality = 100, string fileSuffix = "compress") { if (!File.Exists(imagePath)) { throw new FileNotFoundException(); } if (!Directory.Exists(targetFolder)) { Directory.CreateDirectory(targetFolder); } var fileInfo = new FileInfo(imagePath); var fileName = fileInfo.Name.Replace(fileInfo.Extension, ""); var fileFullName = Path.Combine($"{targetFolder}", $"{fileName}_{fileSuffix}{fileInfo.Extension}"); var imageByte = CompressionImage(imagePath, quality); var ms = new MemoryStream(imageByte); var image = Image.FromStream(ms); image.Save(fileFullName); ms.Close(); ms.Dispose(); image.Dispose(); } private static byte[] CompressionImage(string imagePath, long quality) { using (var fileStream = new FileStream(imagePath, FileMode.Open)) { using (var img =Image.FromStream(fileStream)) { using (var bitmap = new Bitmap(img)) { var codecInfo = GetEncoder(img.RawFormat); var myEncoder = Encoder.Quality; var myEncoderParameters = new EncoderParameters(1); var myEncoderParameter = new EncoderParameter(myEncoder, quality); myEncoderParameters.Param[0] = myEncoderParameter; using (var ms = new MemoryStream()) { bitmap.Save(ms, codecInfo, myEncoderParameters); myEncoderParameters.Dispose(); myEncoderParameter.Dispose(); return ms.ToArray(); } } } } } private static ImageCodecInfo GetEncoder(ImageFormat format) { var codecs = ImageCodecInfo.GetImageDecoders(); return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid); } }
調(diào)用方法(WPF為例)
private void Button_Click(object sender, RoutedEventArgs e) { var fileDialog = new OpenFileDialog(); var fileSelect = ""; if (fileDialog.ShowDialog(this)==true) { fileSelect = fileDialog.FileName; } if(string.IsNullOrWhiteSpace(fileSelect)) return; ImageCompress.CompressionImage(fileSelect,@"d:\",50); }
以上就是C# 進(jìn)行圖片壓縮的示例代碼(對(duì)jpg壓縮效果最好)的詳細(xì)內(nèi)容,更多關(guān)于c# 圖片壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Unity實(shí)現(xiàn)物體跟隨鼠標(biāo)移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)物體跟隨鼠標(biāo)移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01詳解ASP.NET中Identity的身份驗(yàn)證代碼
這篇文章主要介紹了ASP.NET Identity 的“多重”身份驗(yàn)證代碼,以及實(shí)現(xiàn)的原理講解,需要的朋友參考一下。2017-12-12C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)操作MySql數(shù)據(jù)層類MysqlHelper,實(shí)例分析了C#操作MySQL的常用技巧,并將其封裝入一個(gè)類中以方便調(diào)用,需要的朋友可以參考下2015-04-04.NET實(shí)現(xiàn)定時(shí)發(fā)送郵件代碼(兩種方式)
經(jīng)常發(fā)郵件的朋友都知道,郵箱有個(gè)特殊功能,可以設(shè)定郵件發(fā)送時(shí)間,定時(shí)發(fā)送,這個(gè)功能是怎么實(shí)現(xiàn)的呢?接下來,小編給大家分享.NET實(shí)現(xiàn)定時(shí)發(fā)送郵件的代碼,有需要的朋友可以參考下2015-08-08C#實(shí)現(xiàn)簡單的汽車租賃系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)汽車租賃系統(tǒng)的具體實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05