读取指定路径下的图片文件,修改图片尺寸和pdi
我的文件夹下都是图片, 如果是混合的文件,自己写个后缀名过滤函数就行,或者修改 GetFiles 过滤参数 “*”.
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); // 设置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); // 保存图片,按照图片原始格式保存
}
}
}
}