c++如何将图片写入缓存
想用OpenCV在MFC图片控件上连续显示一组图片,现在可以实现从文件中读取图片,然后通过OpenCV在MFC上把图片显示出来,但是循环显示的时候每次都要从文件中读取图片...
想用OpenCV在MFC图片控件上连续显示一组图片,现在可以实现从文件中读取图片,然后通过OpenCV在MFC上把图片显示出来,但是循环显示的时候每次都要从文件中读取图片,这样效率会很慢。
我想先把图片写入缓存,然后OpenCV从缓存中获取图片再显示,这样效率会快很多。
因为第一次用到缓存,有没有哪位前辈帮忙解决一下,先谢谢了 展开
我想先把图片写入缓存,然后OpenCV从缓存中获取图片再显示,这样效率会快很多。
因为第一次用到缓存,有没有哪位前辈帮忙解决一下,先谢谢了 展开
4个回答
展开全部
所谓的缓存就是字节数组。例如:
char buffer [5][100000]; //定义2维数组,可以存5组图片,每组图片100000字节空间。
for(i=0;i<5;i++)
{ // 先从文件读取图片
// 然后把图片数据memcpy到buffer[i]中去
}
//显示图片的时候,先从buffer[i]中取出图片数据,再显示出来
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]
展开全部
用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) {} } }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
BYTE * pBuffer = (BYTE*) malloc(文件大小)
然后读文件,读出来的内容memcpy到pBuffer里
然后读文件,读出来的内容memcpy到pBuffer里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CArray<CBitmap*> arrCache;
追问
多谢你的回答,但是这个赶的比较急,有没有现成的图片写入缓存和读取的例子呀?
邮箱hp_hear@一六三点com,谢谢了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询