c++如何将图片写入缓存

想用OpenCV在MFC图片控件上连续显示一组图片,现在可以实现从文件中读取图片,然后通过OpenCV在MFC上把图片显示出来,但是循环显示的时候每次都要从文件中读取图片... 想用OpenCV在MFC图片控件上连续显示一组图片,现在可以实现从文件中读取图片,然后通过OpenCV在MFC上把图片显示出来,但是循环显示的时候每次都要从文件中读取图片,这样效率会很慢。
我想先把图片写入缓存,然后OpenCV从缓存中获取图片再显示,这样效率会快很多。
因为第一次用到缓存,有没有哪位前辈帮忙解决一下,先谢谢了
展开
 我来答
cooke1234
推荐于2016-10-24 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3602万
展开全部
所谓的缓存就是字节数组。例如:
char buffer [5][100000]; //定义2维数组,可以存5组图片,每组图片100000字节空间。

for(i=0;i<5;i++)
{ // 先从文件读取图片
// 然后把图片数据memcpy到buffer[i]中去
}

//显示图片的时候,先从buffer[i]中取出图片数据,再显示出来
更多追问追答
追问
谢谢你的回答,但是对图片的读取是根据图片的名字,你的意思是把图片的名字放到buffer里?
追答
你可以再建一个数组char filename[5][100]; 用于存储名字
filename[0]对应buffer[0]
filename[5]对应buffer[5]
喜上头头3848
2013-07-24 · 贡献了超过338个回答
知道答主
回答量:338
采纳率:0%
帮助的人:106万
展开全部
用SocketChanne从socket里读文件数据流y用NIO的FileChannel从ByteBuffer里读缓存数据写入FileOutputStream:     private static void receiveFile(SocketChannel socketChannelimqu File file) throws IOException {          FileOutputStream fos = null;          FileChannel channel = null;                    try {              fos = new FileOutputStream(file);              channel = fos.getChannel();              ByteBuffer buffer = ByteBuffer.allocateDirect(1024);                int size = 0;              while ((size = socketChannel.read(buffer)) != -1) {                  buffer.flip();                  if (size &gt; 0) {                      buffer.limit(size);                      channel.write(buffer);                      buffer.clear();                  }              }          } finally {              try {                  channel.close();              } catch(Exception ex) {}              try {                  fos.close();              } catch(Exception ex) {}          }      }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zero945493
2013-07-24 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:92
采纳率:100%
帮助的人:86万
展开全部
BYTE * pBuffer = (BYTE*) malloc(文件大小)

然后读文件,读出来的内容memcpy到pBuffer里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
888atao
2013-07-24 · TA获得超过330个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:302万
展开全部
CArray<CBitmap*> arrCache;
追问
多谢你的回答,但是这个赶的比较急,有没有现成的图片写入缓存和读取的例子呀?
邮箱hp_hear@一六三点com,谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式