把資源加载到内存中 BMP 出错
BMP文件放到VS的資源中時,VS會將BMP的文件頭去掉,即BITMAPFILEHEADER,這個結構體去除。所以當加載BMP到內存中時,如果是使用GDI+或是其它解釋庫時,會解析失敗。
所以在讀取BMP資源時,需要加上BITMAPFILEHEADER結構體。
// pvResData 為已經讀入到內存的BMP數據。
//获得位图信息头
BITMAPINFOHEADER bmpInfoHdr;
CopyMemory(&bmpInfoHdr, pvResData, sizeof(BITMAPINFOHEADER));
//获得位图颜色表中RGBQUAD结构的个数
long nColorEntries;
switch(bmpInfoHdr.biBitCount)
{
case 1:
nColorEntries = 2;
break;
case 4:
nColorEntries = 16;
break;
case 8:
nColorEntries = 256;
break;
default:
nColorEntries = 0;
}
//根据位图信息头创建位图文件头
BITMAPFILEHEADER bmpFileHdr;
bmpFileHdr.bfType = 0x4d42; // 'BM'
bmpFileHdr.bfSize = sizeof(BITMAPINFOHEADER) + dwResSize;
bmpFileHdr.bfReserved1 = bmpFileHdr.bfReserved2 = 0;
bmpFileHdr.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * nColorEntries;
//写入位图文件头
//...
// 再寫入 pvResData
參考:
http://blog.csdn.net/lyserver/article/details/2874366
把資源加载到内存中 BMP 出错的更多相关文章
- iOS图片加载到内存中占用内存情况
我的测试结果: 图片占用内存 图片尺寸 .png文件大小 1MB 512*512 316KB 4MB 10 ...
- java动态编译类文件并加载到内存中
如果你想在动态编译并加载了class后,能够用hibernate的数据访问接口以面向对象的方式来操作该class类,请参考这篇博文-http://www.cnblogs.com/anai/p/4270 ...
- 想要配置文件生效 需要通过添加到web.xml加载到内存中
想要配置文件生效 需要通过添加到web.xml加载到内存中
- Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)
最近公司要做功能迁移,原来的后台使用的Netty,现在要迁移到在uap上,也就是说所有后台的代码不能通过netty写的加载顺序加载了. 问题就来了,怎样让迁移到tomcat的代码按照原来的加载顺序进行 ...
- 深入浅出JVM(一):你写得.java文件是如何被加载到内存中执行的
众所周知,.java文件需要经过编译生成.class文件才能被JVM执行. 其中,JVM是如何加载.class文件,又做了些什么呢? .class文件通过 加载->验证->准备->解 ...
- gensim Word2Vec 训练和使用(Model一定要加载到内存中,节省时间!!!)
训练模型利用gensim.models.Word2Vec(sentences)建立词向量模型该构造函数执行了三个步骤:建立一个空的模型对象,遍历一次语料库建立词典,第二次遍历语料库建立神经网络模型可以 ...
- linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间
转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开 ...
- EF 学习系列三 数据操作数据加载及EF中执行Sql
1.实体状态 我们通过EF来对数据库进行操作并持久化到数据库,那么EF必然通过EF上下文来维护实体的状态,明确知道每一个状态所对应的操作.也就是说EF通过上下文负责跟踪实体的状态.EF实体状态存在命名 ...
- Spark在处理数据的时候,会将数据都加载到内存再做处理吗?
对于Spark的初学者,往往会有一个疑问:Spark(如SparkRDD.SparkSQL)在处理数据的时候,会将数据都加载到内存再做处理吗? 很显然,答案是否定的! 对该问题产生疑问的根源还是对Sp ...
随机推荐
- 反射机制(1)认识Class类
认识Class类: 正常情况下,必须指定类的完整路径才能实例化对象,但是java中也允许通过一个对象找到其所在类的信息.这实际就是class类的功能. package 类集; class X{ }; ...
- C++从零实现简单深度神经网络(基于OpenCV)
代码地址如下:http://www.demodashi.com/demo/11138.html 一.准备工作 需要准备什么环境 需要安装有Visual Studio并且配置了OpenCV.能够使用Op ...
- 关于同一线程两次调用EnterCriticalSection的测试
#include "stdafx.h" #include <iostream> using namespace std; #include <windows.h& ...
- thinkphp 3.2多语言设置
1.将CheckLangBehavior.class.php(没有的话去下载完整版)文件放到此目录下:\ThinkPHP\Extend\Behavior 2.修改目录下文件Application\Ho ...
- Vue Element Form表单时间验证控件使用
如果直接使用Element做时间选择器,其规则(rules)不添加type:'date',会提示类型错误,处理这个需要规范值的类型为date. 时间格式化过滤器 import Vue from 'vu ...
- 飞机3D轨迹绘制(经度-纬度-高度)
使用Python绘制 #绘制三维直线图,将飞机飞行的航迹用(经度,纬度和高度)来描述 #******************************************************** ...
- 转:浅析VO、DTO、DO、PO的概念、区别和用处
原文链接 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对象,这个概 ...
- Excel去除单元格中的汉字
Alt+F11,插入,模块 Function RemoveChinese(rng As Range) s = Len(rng.Text) For i = 1 To s txt = StrConv(Mi ...
- 如果你需要从不同的服务器(不同域名)上获取数据就需要使用跨域 HTTP 请求
Response.AppendHeader("Access-Control-Allow-Origin", "*")Response.AppendHeader(& ...
- Java并发编程(六):Java里实现对象安全发布的四种方式
接上篇,首先要了解什么是对象的发布与逸出? Java里安全发布对象的四种方法1.单例(注意懒汉和饿汉的区别)2.静态属性,注意类里的静态域和静态代码块的顺序有要求3.枚举4.final