在c#中调整图像大小并保存此图像
我有一些任务-调整图像大小,如果高度或宽度>500px。 我试试这个代码 但当我选择图像时,我有如下错误 NewImage.Save(路径) b一般形式的GDI+错误在c#中调整图像大小并保存此图像,c#,C#,我有一些任务-调整图像大小,如果高度或宽度>500px。 我试试这个代码 但当我选择图像时,我有如下错误 NewImage.Save(路径) b一般形式的GDI+错误 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Multiselect = true;
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Multiselect = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
for (int i = 0; i < fdlg.FileNames.Length; i++)
{
string file = fdlg.FileNames[i];
string path = System.IO.Path.GetFullPath(file);
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
if (img.Width > 500 || img.Height > 500)
{
int currW = img.Width;
int currH = img.Height;
int realWPer = 500 * 100 / currW;
int realHPer = 500 * 100 / currH;
int realW = currW / 100 * realWPer; // new width
int realH = currH / 100 * realHPer; // new height
Image NewImage = resizeImage(img, new Size(realW, realH));
NewImage.Save(path);
}
}
}
}
public static Image resizeImage(Image imgToResize, Size size)
{
return (Image)(new Bitmap(imgToResize, size));
}
private void按钮1\u单击(对象发送者,事件参数e)
{
OpenFileDialog fdlg=新建OpenFileDialog();
fdlg.Multiselect=true;
if(fdlg.ShowDialog()==DialogResult.OK)
{
对于(int i=0;i500 | | img.高度>500)
{
int currW=最小宽度;
int currH=img.高度;
int realWPer=500*100/电流;
int realHPer=500*100/电流;
int realW=currW/100*realWPer;//新宽度
int realH=currH/100*realHPer;//新高度
Image NewImage=resizeImage(img,新大小(realW,realH));
NewImage.Save(路径);
}
}
}
}
公共静态图像大小图像(图像imgToResize,大小)
{
返回(图像)(新位图(imgToResize,size));
}
您没有发布错误消息,因此只能猜测可能的错误,我猜您在尝试访问锁定的文件时出错
您正试图将新图像保存在仍处于打开状态的旧图像上。您从未关闭/处理
img
,因此当您尝试使用与旧图像相同的路径保存新图像时,它仍处于打开状态错误消息是什么?你试过调试代码吗?您是否试图在打开的文件上保存?当我写入NewImage.save(“C:\\MyFile2.bmp”);//错误还是什么??你犯了什么错误?异常消息是什么?发生一般错误gdi+@bigjoy10错误消息非常模糊。如果将NewImage.Save(path)
替换为File.writealText(path,“hello”)
可能会收到更具描述性的错误消息。