C#如何批量修改圖片尺寸和DPI
C#批量修改圖片尺寸和DPI
讀取指定路徑下的圖片文件,修改圖片尺寸和pdi
我的文件夾下都是圖片
如果是混合的文件,自己寫個(gè)后綴名過濾函數(shù)就行,或者修改 GetFiles 過濾參數(shù) “*”.
string[] filedir = Directory.GetFiles(Root, "*.png", SearchOption.AllDirectories);
private void button1_Click(object sender, EventArgs e)
{
string Root = this.textBox1.Text.Trim();
// 讀取文件夾下的所有文件 (方法一)
string[] filedir = Directory.GetFiles(Root, "*", SearchOption.AllDirectories);
foreach (string fileName in filedir)
{
ChagePicDPI(fileName);
}
方法二
//DirectoryInfo folder = new DirectoryInfo(Root);
//foreach (FileInfo file in folder.GetFiles("*"))
//{
// // 修改圖片dpi
// ChagePicDPI(file);
//}
MessageBox.Show("ok");
}
private void ChagePicDPI(string fileName)
{
int newWidth = 400; // 固定圖像寬度
int DPI = 1200; // 圖像DPI
using (Bitmap oldBitmap = new Bitmap(fileName))
{
int newHeight = Convert.ToInt32(1.0 * oldBitmap.Height * newWidth / oldBitmap.Width); // 圖像高度按照寬度等比變化
using (Bitmap newBitmap = new Bitmap(newWidth, newHeight, PixelFormat.Format24bppRgb))
{
using (Graphics g = Graphics.FromImage(newBitmap))
{
g.Clear(System.Drawing.Color.White); // 背景白色
g.DrawImage(oldBitmap, new Rectangle(0, 0, newBitmap.Width, newBitmap.Height));
newBitmap.SetResolution(DPI, DPI); // 設(shè)置DPI
string newFileName = fileName.Replace("D:\\圖形", "C:\\Users\\Administrator\\Desktop\\11111"); // 替換文件路徑
string dir = Path.GetDirectoryName(newFileName);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
newBitmap.Save(newFileName, oldBitmap.RawFormat); // 保存圖片,按照?qǐng)D片原始格式保存
}
}
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#利用ASP.NET?Core開發(fā)學(xué)生管理系統(tǒng)詳解
隨著技術(shù)的進(jìn)步,跨平臺(tái)開發(fā)已經(jīng)成為了標(biāo)配,在此大背景下,ASP.NET?Core也應(yīng)運(yùn)而生。本文主要利用ASP.NET?Core開發(fā)一個(gè)學(xué)生管理系統(tǒng),感興趣的可以學(xué)習(xí)一下2022-01-01
C#實(shí)現(xiàn)字符串與圖片的Base64編碼轉(zhuǎn)換操作示例
這篇文章主要介紹了C#實(shí)現(xiàn)字符串與圖片的Base64編碼轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了C#針對(duì)base64編碼與圖片的相互轉(zhuǎn)換操作技巧,需要的朋友可以參考下2017-06-06
DevExpress實(shí)現(xiàn)TreeList節(jié)點(diǎn)互斥的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)TreeList節(jié)點(diǎn)互斥的方法,對(duì)于初學(xué)者更好的理解C#有一定的幫助,需要的朋友可以參考下2014-08-08
C#根據(jù)權(quán)重抽取隨機(jī)數(shù)
最近在開發(fā)過程中遇到一個(gè)需要做帶權(quán)隨機(jī)的處理,本文主要介紹了C#根據(jù)權(quán)重抽取隨機(jī)數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
C#中Invoke和BeginInvoke區(qū)別小結(jié)
有時(shí)候,我們不得不跨線程調(diào)用主界面的控件來進(jìn)行操作,所以為了方便的解決問題,.net為我們提供了Invoke?與beginInvoke,那么Invoke和BeginInvoke區(qū)別在哪,本文就來詳細(xì)的介紹一下2023-08-08
C#實(shí)現(xiàn)通過ffmpeg從flv視頻文件中截圖的方法
這篇文章主要介紹了C#實(shí)現(xiàn)通過ffmpeg從flv視頻文件中截圖的方法,實(shí)例分析了C#使用ffmpeg操作flv文件的技巧,需要的朋友可以參考下2015-03-03
C#使用AnimateWindow()實(shí)現(xiàn)動(dòng)畫窗體的方法
用API函數(shù)AnimateWindow函數(shù)來實(shí)現(xiàn)窗體的動(dòng)畫效果,在C#中,你可以使用P/Invoke技術(shù)調(diào)用Windows API中的AnimateWindow函數(shù)來實(shí)現(xiàn)動(dòng)畫窗體,本文就給大家介紹了C#使用AnimateWindow()實(shí)現(xiàn)動(dòng)畫窗體的方法,感興趣的朋友可以參考下2024-04-04

