存储rtf有时候需要实现RTF文字和图片分离。rtf文字可以通过RICHTEXTBOX.TEXT而获取。但是图片的话需要分离。

实现原理:

原来存储在RTF格式中的图片数据(图片数据位置请参阅RTF格式研究这篇文章)是把原图片的16进制数据直接变成ascii字符数据嵌入RTF文件中的

也就是:

&H432D(一共16bit数据长度)变成了"432D"(一共32bit数据)字符串存储在文件中,我们要做的是把字符串再转回16进制数

========================================================

只要定义一个字节数组B() as byte

每两个字符从RTF图片数据中读出//2个字符16bit大小

通过val等函数转换成数值//十进制,因为16进制在vb比较难操作,所以选择数值相同的十进制,存进去变量以后的2进制是一样的

存储在B(i)中//8bit(把2个字符压成一个字符拉....)

然后用vb的二进制方式binary

写入整个B()数组到文件

然后通过任何图片程序就可以读取拉

分离代码如下:

string cmd = "select QUESTION_CONTENT from TB_QUESTION where QUESTION_ID='TK11042900284'";
                    tempStr = SQLDAL.OracleHelper.GetSingle(cmd);
                    //数据库读出的RTF字符串。
                    string _RtfText = tempStr;
                    IList<string> _ImageList = new List<string>();
                    while (true)
                    {
                        int _Index = _RtfText.IndexOf("pichgoal");
                        if (_Index == -1) break;
                        _RtfText = _RtfText.Remove(0, _Index + 8);

_Index = _RtfText.IndexOf("\r\n");

_RtfText = _RtfText.Remove(0, _Index);

_Index = _RtfText.IndexOf("}");
                        _ImageList.Add(_RtfText.Substring(0, _Index).Replace("\r\n", ""));

_RtfText = _RtfText.Remove(0, _Index);

}

Byte[] buffer;
                    buffer = null;
                    for (int i = 0; i != _ImageList.Count; i++)
                    {
                     //   System.IO.FileStream _File = new FileStream(System.Windows.Forms.Application.StartupPath + "\\" + i.ToString() + ".dat", System.IO.FileMode.Create);
                        int _Count = _ImageList[i].Length / 2;
                         buffer = new Byte[_ImageList[i].Length/2];

for (int z = 0; z != _Count; z++)
                        {
                            string _TempText = _ImageList[i][z * 2].ToString() + _ImageList[i][(z * 2) + 1].ToString();
                        //    _File.WriteByte(Convert.ToByte(_TempText, 16));
                            buffer[z] = Convert.ToByte(_TempText, 16);  
                        }

//    _File.Close();
                    }
                    MemoryStream ms = new MemoryStream(buffer);
                    Image _a = Image.FromStream(ms);
                  //  Bitmap _a = new Bitmap(Application.StartupPath + "\\" + "0.dat");
                    if (_a != null)
                    {
                        pictureBox1.Image = _a;
                      
                    }
                    else
                    {
                        MessageBox.Show("as");

}

转自:http://haitaowang.blog.163.com/blog/static/128023119201151531653861/

参考:http://bbs.csdn.net/topics/290072647

关于RTF提取图片和文字的方法 (转)相关推荐

  1. 关于RTF提取图片和文字的方法。

    存储rtf有时候需要实现RTF文字和图片分离.rtf文字可以通过RICHTEXTBOX.TEXT而获取.但是图片的话需要分离. 实现原理: 原来存储在RTF格式中的图片数据(图片数据位置请参阅RTF格 ...

  2. iPhone提取图片上文字的方法

    随着互联网和多媒体的发展,现在很多的文件都会保存为电子档的格式,那将图片文字转换成文本也是我们经常遇到的问题,很多人都是打字录入,其实有更加简单的方法!下面就教大家用iPhone将纸质文档转换文本的方 ...

  3. android 图片绑定按钮,Android编程实现给Button添加图片和文字的方法

    本文实例讲述了Android编程实现给Button添加图片和文字的方法.分享给大家供大家参考,具体如下: //为按钮添加图片和文字的方法 public Spanned getSpan(int id, ...

  4. 微信图片转文字的方法有哪些

    微信怎么将图片转换为文字呢?工作中很多人都会接触到图片文字需要再利用的情况,入股图片文字少的话可以直接手敲下来,要是文字过多的话该怎么办呢?其实手机微信里的小程序都可以直接将图片文字转换出来,还可以翻 ...

  5. java+微博上传图片_java实现新浪微博Oauth接口发送图片和文字的方法

    本文实例讲述了java实现新浪微博oauth接口发送图片和文字的方法.分享给大家供大家参考.具体如下: 基于网上很多人利用新浪api开发新浪微博客户端的时候遇到无法发图片的问题,很多人卡在了这一布.现 ...

  6. 怎么图片转文字提取?推荐四种图片转文字的方法

    我有一个习惯就是遇到重点内容.重要的资料就会拍照保存起来,一方面是怕自己转过头就忘了内容,另一方面也是为了能够更好的整理资料. 因为通常一份资料或者课堂内容我都会拍摄7到8张左右的照片,所以如果有时间 ...

  7. C# Word文档中插入、提取图片,文字替换图片

    Download Files: http://www.c-sharpcorner.com/UploadFile/26b237/image-operations-using-word-document- ...

  8. 从word中提取图片的三种方法

    方法1:使用截图方法来提取并保存图片,如果你安装了QQ并且运行了的话,你可以使用Ctrl+Alt+A来截图,然后在QQ聊天框中按CTRL+V来保存图片,当然你可以在PS新建文档按CTRL+V来粘贴图片 ...

  9. UIButton上同时显示图片和文字的方法

    copy from CPLASF_lixj  http://blog.csdn.net/qijianli/article/details/8152726 项目中经常会遇到Button上同时显示图片和文 ...

最新文章

  1. Best of Ruby Quiz 笔记之一:Mad Libs
  2. 随机森林中的Bootstrap抽样是有放回抽样么?Bootstrap抽样过程描述一下
  3. 微软ASP.NET MVC Beta版本发布
  4. a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯
  5. OC:数组排序、时间格式化字符串
  6. Class类 获取Class对象
  7. 为啥通过MSIE判断浏览器信息
  8. OpenCV中的傅里叶的门道
  9. python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积
  10. 20165307《网络对抗技术》Exp1 PC平台逆向破解
  11. C语言结构体内存对齐问题
  12. 广东省的盆友们,这波退税及时雨你赶上了吗?
  13. mysql sql语法区别_sql和mysql语法有什么不同
  14. linux解决用户权限不够问题
  15. Greenplum 6 磁盘配额管理工具“Diskquota”
  16. C# 源码 ,使用<switch语句>实现学生成绩评测.
  17. A Novel Proof-of-Reputation Consensus for Storage Allocation in Edge Blockchain Systems 精读笔记(三)
  18. 微信小程序微信账号登录
  19. 前端加载动画/加载等待动画
  20. 关于火绒安装,出现版本过低问题的解决办法

热门文章

  1. 触动精灵:触动精灵脚本编辑器
  2. GPBCON控制器控制LED显示
  3. UOS 移植 Flash Player 页游微端
  4. 电量优化 之 导出Bugreport日志
  5. lua和unity如何交互_【Lua与C#交互④】如何让Lua打印到Unity控制台
  6. dbms_DBMS的组件
  7. IDL学习——利用IDL和ENVI处理OMI数据,包括臭氧,甲醛和二氧化氮
  8. 合作版机房收费系统——报表
  9. 正则基础之——贪婪与非贪婪模式
  10. 自动驾驶对未来城市基础设施的重构