youyiyang 2022-05-15 14:19 采纳率: 74.2%
浏览 76
已结题

.Net 图片保存不成功 system.runtime.interopservices.externalexception (0x80004005)错误

在winform开发中,主程序调用一个Form把图片保存到磁盘目录中,保存的函数如下所示:


```c#
private void buttonSaveFile_Click(object sender, EventArgs e)
        {
            string pictureName = "";
            switch (this.wpType)
            {
                case 1:  // 点 
                    pictureName = saveFileDialog1.InitialDirectory + this.selectedWp + "_p.jpg";
                    break;
                case 2:  //边
                    pictureName = saveFileDialog1.InitialDirectory + this.selectedWp + "_e.jpg";
                    break;
                case 3: //扫描节点
                    pictureName = saveFileDialog1.InitialDirectory + this.selectedWp + "_s.jpg";
                    break;
            }
             //图片另存
            using (MemoryStream mem = new MemoryStream())
            {
                try
                {
                    Bitmap bmp = new Bitmap(pictureBox1.Image);
                    //保存到磁盘文件
                    bmp.Save(@pictureName, pictureBox1.Image.RawFormat);
                    bmp.Dispose();
                    MessageBox.Show("图片保存成功!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   
                    switch (this.wpType)
                    {
                        case 1:  // 点 
                            if (f1 != null)
                            {
                                f1(pictureName);
                            }
                            break;
                        case 2:  //边
                            if (f2 != null)
                            {
                                f2(pictureName);
                            }
                            break;
                        case 3: //扫描节点
                            if (f3 != null)
                            {
                                f3(pictureName);
                            }
                            break;
                    }
                }
                catch (Exception err)
                {
                    MessageBox.Show("图片保存不成功!\r\n" + err.ToString(), "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                finally
                {

                }
            }

保存的是Form上的一个pictureBox里的图片,

```c#
private void buttonOpenFile_Click(object sender, EventArgs e)
        {
            DialogResult result = openFileDialog1.ShowDialog();//显示对话框接返回值
            if (result == DialogResult.OK)
            {
                pictureBox1.Image = System.Drawing.Image.FromFile(openFileDialog1.FileName);
            }
        }

当我第一次打开文件然后保存是没有报错的,但是当再次打开文件保存就报这个错误,
错误之处在程序的

bmp.Save(@pictureName, pictureBox1.Image.RawFormat);

这句话上,图片的权限没有问题。
请问到底是哪里出错了,导致的这个问题?谢谢了!

  • 写回答

2条回答 默认 最新

  • 丨Haruna 2022-05-17 17:16
    关注

    更改存储图像的特定文件夹的权限。
    属性 > 安全 > 编辑 > 添加 - 选择“所有人”并选中允许“完全控制”

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 5月15日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效