none
WebBrowser如何插入图片? RRS feed

  • 问题

  • 如题。在Winform里面把WebBrowser打开了编辑模式,然后设置一个打开图片的对话框,选取图片之后再AppendChild之后却发现图片的地址开头自动加入:“about:”字样,导致图片地址获取失败。我是想将图片弄成相对地址的形式存在html里面!

    打开图片相关代码如下:

    OpenFileDialog openfilejpg = new OpenFileDialog();
      openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
      openfilejpg.FilterIndex = 0;
      openfilejpg.RestoreDirectory = true;
      openfilejpg.Multiselect = false;
      if (openfilejpg.ShowDialog() == DialogResult.OK && openfilejpg.FileName.Length > 0)
      {  
      filepath = openfilejpg.FileName;
      filename = Path.GetFileName(openfilejpg.FileName);

      //复制图片到程序目录下的image文件夹
      File.Copy(filepath, @"image/" + filename, true);  
      HtmlElement el = this.webBrowserBody.Document.CreateElement("DIV");
      el.InnerHtml = "<img src=image\\" + filename + "></img>";

      MessageBox.Show(el.InnerHtml);
      this.webBrowserBody.Document.Body.AppendChild(el);
      }

    messagebox show出来的结果如下所示:



    为何会自动添加“about:”这个啊??各位高手给解答一下谢谢!!

    PS:还有一个方法,就是:

    webBrowserBody.Document.ExecCommand("InsertImage", true, null);

    虽然这样也可以添加图片,可是我怎么获取这个图片地址呢?我怎么把这图片修改为相对路径呢?

    各位高手给解答一下谢谢!!
    2010年4月6日 5:28

答案

  • 你好!

    是你的 html 有误。

    this.webBrowser1.Navigate("file:///C:/1.htm");
    OpenFileDialog openfilejpg = new OpenFileDialog();
    openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
    openfilejpg.FilterIndex = 0;
    openfilejpg.RestoreDirectory = true;
    openfilejpg.Multiselect = false;
    if (openfilejpg.ShowDialog() == DialogResult.OK)
    {
        string filepath = openfilejpg.FileName;
        HtmlElement el = this.webBrowser1.Document.CreateElement("DIV");
        el.InnerHtml = "<img src=\"" + filepath + "\"></img>";
        //MessageBox.Show(el.InnerHtml);
        this.webBrowser1.Document.Body.AppendChild(el);
    }


    知识改变命运,奋斗成就人生!
    • 已标记为答案 梦心 2010年4月8日 5:03
    2010年4月6日 6:35
    版主

全部回复

  • 试试

    el.InnerHtml = "<img src=.\\image\\" + filename + "></img>";


    http://feiyun0112.cnblogs.com/
    2010年4月6日 6:24
    版主
  • 试试

    el.InnerHtml = "<img src=.\\image\\" + filename + "></img>";


    http://feiyun0112.cnblogs.com/


    你好,还是不行!show出来的结果是:<img src="about:.\img\3.jpg">

    还是显示不出图片!!

    2010年4月6日 6:34
  • 你好!

    是你的 html 有误。

    this.webBrowser1.Navigate("file:///C:/1.htm");
    OpenFileDialog openfilejpg = new OpenFileDialog();
    openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
    openfilejpg.FilterIndex = 0;
    openfilejpg.RestoreDirectory = true;
    openfilejpg.Multiselect = false;
    if (openfilejpg.ShowDialog() == DialogResult.OK)
    {
        string filepath = openfilejpg.FileName;
        HtmlElement el = this.webBrowser1.Document.CreateElement("DIV");
        el.InnerHtml = "<img src=\"" + filepath + "\"></img>";
        //MessageBox.Show(el.InnerHtml);
        this.webBrowser1.Document.Body.AppendChild(el);
    }


    知识改变命运,奋斗成就人生!
    • 已标记为答案 梦心 2010年4月8日 5:03
    2010年4月6日 6:35
    版主
  • 你好!

    是你的 html 有误。

     

    this.webBrowser1.Navigate("file:///C:/1.htm");
    
    OpenFileDialog openfilejpg = new OpenFileDialog();
    
    openfilejpg.Filter = "jpg图片(*.jpg)|*.jpg|gif图片(*.gif)|*.gif";
    
    openfilejpg.FilterIndex = 0;
    
    openfilejpg.RestoreDirectory = true;
    
    openfilejpg.Multiselect = false;
    
    if (openfilejpg.ShowDialog() == DialogResult.OK)
    
    {
    
        string filepath = openfilejpg.FileName;
    
        HtmlElement el = this.webBrowser1.Document.CreateElement("DIV");
    
        el.InnerHtml = "<img src=\"" + filepath + "\"></img>";
    
        //MessageBox.Show(el.InnerHtml);
    
        this.webBrowser1.Document.Body.AppendChild(el);
    
    }
    
    

     


    知识改变命运,奋斗成就人生!

     

    你好。我按你的方法虽然可以显示图片,但是webBrowser1里面的源码的src地址还是绝对地址,不是相对的!所以一旦我保存webBrowser1的内容,到另一台机器里将内容读取出来放到webBrowser1里,就会叉叉~~

     

    2010年4月6日 6:40
  • 考虑将图片存入到数据中,或是 web 服务器上。
    知识改变命运,奋斗成就人生!
    2010年4月6日 6:43
    版主
  • 考虑将图片存入到数据中,或是 web 服务器上。
    知识改变命运,奋斗成就人生!


    你好。我是要这样的功能。开发一个日记本功能,编辑区可以显示图片和文字,还能进行排版,图片就专门放一个文件夹里。如果把图片存到数据库,那我怎么跟文字以前进行显示呢?

    本想用richtextbox,可是那东西我不知道怎么弄图片进去(用剪贴板的方式很差劲)...

    2010年4月6日 6:45
  • 你好!

    前段时间我们也开发了与你相似的功能。采用的方式是保存文档的同时将所需要的图片也保存到数据库中。如果客户在其它电脑上打开文档,程序同时需要从数据库中取出图片的文件流写在本地的文件夹中。

    另外类似这样的功能是有开源的代码,你有时间可以找找。


    知识改变命运,奋斗成就人生!
    2010年4月6日 6:56
    版主
  • 你好!

    前段时间我们也开发了与你相似的功能。采用的方式是保存文档的同时将所需要的图片也保存到数据库中。如果客户在其它电脑上打开文档,程序同时需要从数据库中取出图片的文件流写在本地的文件夹中。

    另外类似这样的功能是有开源的代码,你有时间可以找找。


    知识改变命运,奋斗成就人生!

    你好。
    这样啊,那如果图片很大,那数据库岂不是很臃肿,读取文件流岂不是要一定时间?

    请问相关源码在哪里能下载到?您有QQ吗?或者您加我:150112458

    非常感谢!

    2010年4月6日 7:00
  • 非常遗憾,我们做的是商业软件,源代码方面不能给予你帮助。如果你的图片量比较大你可以考虑我说另外一种方式:将图片存到Web 服务器上。


    知识改变命运,奋斗成就人生!
    2010年4月6日 7:07
    版主
  • 非常遗憾,我们做的是商业软件,源代码方面不能给予你帮助。如果你的图片量比较大你可以考虑我说另外一种方式:将图片存到Web 服务器上。


    知识改变命运,奋斗成就人生!


    呵呵,了解。非常非常感谢你的回复,版主...

    2010年4月6日 7:10