从RichTextBox中提取图像

时间:2011-06-16 18:39:59

标签: c# image image-processing richtextbox rtf

我有一个应用程序,用户可以将图像插入RichTextBox。我希望能够用一些令牌替换RTF中的所有图像,并将图像存储在单独的文件中。我稍后会将图像注入RTF。

我设法让插件工作但最终通过剪贴板粘贴它们(非常像Insert an image into RTF document in C#)。

现在的麻烦是如何提取图像。

  1. 如何以编程方式选择RichTextBox中的图像?

  2. 我是否必须通过剪贴板返回?类似的东西:

    IDataObject data = Clipboard.GetDataObject();
    Clipboard.Clear();
    
    _RichTextBox.Select(/* The image */);
    _RichTextBox.Copy();
    
    Image img = Clipboard.GetImage();
    img.Save("myImage.png", System.Drawing.Imaging.ImageFormat.Png);
    
    Clipboard.Clear();
    Clipboard.SetDataObject(data);
    
  3. 是否有一个更优雅的解决方案,不需要通过剪贴板?

  4. 感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用此RTF Converter使用 RtfVisualImageAdapter 类提取RichTextBox的图像。

查看示例:

  • RichTextBox: RtfWinForms (Windows窗体), RtfWindows (WPF)
  • 图像处理: Rtf2Html

答案 1 :(得分:0)

图片看起来像这样:

{\*\shppict {\pict \emfblip ..... }}{\nonshppict {\pict ....}}

甚至

{\pict ...}

您可以检查包含图片的文档的rtf并编写正则表达式来提取图像(用标记替换它们)。 另一个正则表达式替换可以恢复图像。