Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#中调整图像大小并保存此图像_C# - Fatal编程技术网

在c#中调整图像大小并保存此图像

在c#中调整图像大小并保存此图像,c#,C#,我有一些任务-调整图像大小,如果高度或宽度>500px。 我试试这个代码 但当我选择图像时,我有如下错误 NewImage.Save(路径) b一般形式的GDI+错误 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Multiselect = true;

我有一些任务-调整图像大小,如果高度或宽度>500px。 我试试这个代码

但当我选择图像时,我有如下错误

NewImage.Save(路径)

b一般形式的GDI+错误

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”)
可能会收到更具描述性的错误消息。