您的位置:首页 > 数据库 > Mongodb

C++从mongodb取图片操作(存入内存处理图片)!

2012-08-24 18:48 288 查看
刚开始写这个程序到时候都是先写入本地磁盘,然后再读取图片处理,一直以来都知道这样会很慢,但是为了先搞定处理图片功能,没去管。

今天就想解决这个问题,然后刻意取网上搜集了些资料,经过搜集到资料和自己到总结,总算解决了。

首先来说一下mongodb的GridFS,网上很多就不介绍了,我之前一直在用find函数,原型是

GridFile findFile (BSONObj query)
const
 returns a file object matching the query 
这个函数就不讲怎么用了,网上有,简单的都是找出条件query所要找到的图片。一般是根据_id来查询。

它所返回到值是GridFile类型的,这个类型在官网也能看到很详细,然后里面有一个方法是write:

gridfs_offset write (ostream
&out) const
 write the file to the output stream 
gridfs_offset write (const
string &where) const
 write the file to this filename 
这里看到二进制流其实就豁然开朗了,既然是流,那当然可以写入文件中,但是我的目的不是写入文件中,而是写入内存中,这当然也可以,首先我就想到入char*。
我查了好些资料,终于在http://www.cplusplus.com/reference/iostream/istream/read/ 也就是C++的官网看到了这个。

发现有一个类是stringstream,它继承IOSTREAM,OSTREAM,ISTREAM,看了看例子就把二进制流写入了char*中,然后将它运用到我写的程序,调试调试。OK
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息