VC提取文件中的图片
我的想法是这样的,将一个文件导入内存,比如:HANDLEhFile=::CreateFile(file.lpstrFile,GENERIC_READ,FILE_SHARE...
我的想法是这样的,将一个文件导入内存,比如:
HANDLE hFile=::CreateFile(file.lpstrFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READONLY, NULL, NULL, NULL);
LPVOID lpBase = ::MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0);然后读取lpBase中VRAM的数据,之后将数据化为象素点,用SetPixel.
不知道这种方法可不可行,还有没有另外一种办法呢?
如果是png或其它呢
其实我是想导出一些游戏的图片,请问有更好的方法呢
一些小游戏的图片格式我想应该都是png格式,因为背景都是透明色,由于文件只能比较小,所以图片文件可能不存在文件头信息 展开
HANDLE hFile=::CreateFile(file.lpstrFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READONLY, NULL, NULL, NULL);
LPVOID lpBase = ::MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0);然后读取lpBase中VRAM的数据,之后将数据化为象素点,用SetPixel.
不知道这种方法可不可行,还有没有另外一种办法呢?
如果是png或其它呢
其实我是想导出一些游戏的图片,请问有更好的方法呢
一些小游戏的图片格式我想应该都是png格式,因为背景都是透明色,由于文件只能比较小,所以图片文件可能不存在文件头信息 展开
展开全部
每种文件类型都有标记头来标记当前文件的类型。(图像文件自不必说)。
象 bmp,jpg,png,ico等文件都有头标记来。
如果图片是整个安装文件的方式嵌入在一个大文件里面,你可以先在缓冲区中搜索 这个标记字符串(比如bmp是,BM ),搜到后,根据长度(长度的获取,根据文件的描述信息在文件头标记后面有记录的,也可以假定一个较大值,由Load自动判断)构建一个流,再使用 CImage 类的 Load来装入这个流,看能否识别为图片。
如果图片只是将数据装入在文件里面,一般都是bmp格式的(数据方式不可能为压缩格式存储,因为CPU处理都是按照位图处理的,如果转换保存格式,存储和装入会比较麻烦),根据bmp信息头的信息来自动匹配好了,比如MSDN上说 BITMAPINFOHEADER 上某个字段必须为0,等等,来模拟判断。使用 CreateDIBSection 来构建DIB图像,再将缓冲区数据考入DIB的缓冲区中。就能显示了
不要 SetPixel。
象 bmp,jpg,png,ico等文件都有头标记来。
如果图片是整个安装文件的方式嵌入在一个大文件里面,你可以先在缓冲区中搜索 这个标记字符串(比如bmp是,BM ),搜到后,根据长度(长度的获取,根据文件的描述信息在文件头标记后面有记录的,也可以假定一个较大值,由Load自动判断)构建一个流,再使用 CImage 类的 Load来装入这个流,看能否识别为图片。
如果图片只是将数据装入在文件里面,一般都是bmp格式的(数据方式不可能为压缩格式存储,因为CPU处理都是按照位图处理的,如果转换保存格式,存储和装入会比较麻烦),根据bmp信息头的信息来自动匹配好了,比如MSDN上说 BITMAPINFOHEADER 上某个字段必须为0,等等,来模拟判断。使用 CreateDIBSection 来构建DIB图像,再将缓冲区数据考入DIB的缓冲区中。就能显示了
不要 SetPixel。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 SetPixel 的效率很低。
如果是已知图片格式(bmp jpg png 等)而不是自定义格式,可以直接用 GDI+ 载入并显示图片,会自动判断图片格式的。
如果是 bmp,也可以用 GDI 的 LoadImage。
如果是已知图片格式(bmp jpg png 等)而不是自定义格式,可以直接用 GDI+ 载入并显示图片,会自动判断图片格式的。
如果是 bmp,也可以用 GDI 的 LoadImage。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PNG格式是最适合的。甚至于PNG图片可以根据不同用户显示不同的信息的。
如果实在想要不同格式的,就可以用GDI来判断图片格式。
如果实在想要不同格式的,就可以用GDI来判断图片格式。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
图片文件都是带格式的,只有RAW格式的图片文件可以直接读取原始数据画图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用GDI+ 估计你一时半会学不会
用CxImage类,
用CxImage类,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询