正在从RichTextBox中提取图像

本文关键字:提取 图像 RichTextBox | 更新日期: 2023-09-27 17:59:33

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

我已经设法使插入工作,但最终不得不通过剪贴板粘贴它们(非常像在C#中将图像插入RTF文档)。

现在的问题是如何提取图像。

  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. 有没有一个更优雅的解决方案不需要经过剪贴板?

谢谢你的帮助!

正在从RichTextBox中提取图像

图片如下所示:

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

甚至

{'pict ...}

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

您可以使用此RTF转换器,使用类RtfVisualImageAdapter提取RichTextBox的图像。

查看示例:

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