(一)ImageProcess软件学习--BmpFile.h头文件

本文介绍了一个BMP图像文件类CBmpFile的设计与实现,包括重载运算符、创建、加载、保存位图等功能,并解释了BMP文件的结构组成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一开始,先来看看BmpFile.h文件吧。


class CBmpFile   //bmp图像文件类
{
public:
    CBmpFile();
    virtual ~CBmpFile();
public:
BYTE*  operator[](int nIndex);   //重载运算符[]
const CBmpFile& operator=(CBmpFile& bmpFile); //重载运算符=,实现bmp图像赋值操作
BOOL CreateBmp(int cols,int rows,int pixelPytes);//创造一幅新的bmp位图
    BOOL Load4File( LPCSTR lpstrPathName );//加载bmp位图
    BOOL Save2File( LPCSTR lpstrPathName );//保存bmp位图到磁盘
void Draw2DC( HDC hDC,int x,int y );//显示bmp位图
public:
    BYTE*    m_pImgDat;   //指向图像数据的指针
    int      m_Cols,m_Rows,m_PxlBytes;//分别储存图像的列数、行数、每个像素所需的字节数
BYTE*    m_pBmpInfo;//指向位图文件信息头的指针


};


关于重载运算符就是让实数中的+号可以重新定义让其可以进行类的运算,具体可以参考http://blog.youkuaiyun.com/dingyuanpu/article/details/5852825

这就是一个bmp图像文件类,它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

典型的BMP图像文件由四部分组成:
1:位图头文件数据结构,它包含BMP图像文件的类型、显示内容等信息;比如bmp类中的BYTE * m_pBmpInfo
2: 位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;
3: 调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;
4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。
下一篇我将会分析BmpFile.cpp中的各种实现class  CBmpFile类中的函数。

makensis.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Output: Command line defined: "APP_ID=com.jcloud.shixinhua.kantuwang" Command line defined: "APP_GUID=f756239e-0578-500f-8e70-d9a7ed28da2f" Command line defined: "UNINSTALL_APP_KEY=f756239e-0578-500f-8e70-d9a7ed28da2f" Command line defined: "PRODUCT_NAME=��ͼ��" Command line defined: "PRODUCT_FILENAME=��ͼ��" Command line defined: "APP_FILENAME=leidian" Command line defined: "APP_DESCRIPTION=kantuwang" Command line defined: "VERSION=1.0.26" Command line defined: "PROJECT_DIR=D:\���\�ֻ����\1_1_h5-image-template-proj" Command line defined: "BUILD_RESOURCES_DIR=D:\���\�ֻ����\1_1_h5-image-template-proj\dist_electron" Command line defined: "APP_PACKAGE_NAME=leidian" Command line defined: "MUI_ICON=D:\���\�ֻ����\1_1_h5-image-template-proj\build\ktw.ico" Command line defined: "MUI_UNICON=D:\���\�ֻ����\1_1_h5-image-template-proj\build\ktw.ico" Command line defined: "APP_64=D:\���\�ֻ����\1_1_h5-image-template-proj\dist_electron\leidian-1.0.26-x64.nsis.7z" Command line defined: "APP_64_NAME=leidian-1.0.26-x64.nsis.7z" Command line defined: "APP_64_HASH=7746E13555ED88FD120D0DD1DB898C2E9A370C2454BEBF266C4B7EA4855A43F441A1655305EFD74DA0065E08DD2E8F56BF51484303FC3ADCCFCB8E2C41812B9D" Command line defined: "COMPANY_NAME=kantuwang" Command line defined: "APP_PRODUCT_FILENAME=��ͼ��" Command line defined: "APP_INSTALLER_STORE_FILE=leidian-updater\installer.exe" Command line defined: "COMPRESSION_METHOD=7z" Command line defined: "HIDE_RUN_AFTER_FINISH" Command line defined: "MULTIUSER_INSTALLMODE_ALLOW_ELEVATION" Command line defined: "INSTALL_MODE_PER_ALL_USERS_REQUIRED" Command line defined: "allowToChangeInstallationDirectory" Command line defined: "SHORTCUT_NAME=��ͼ��" Command line defined: "UNINSTALL_DISPLAY_NAME=��ͼ��" Command line defined: "MUI_WELCOMEFINISHPAGE_BITMAP=${NSISDIR}\Contrib\Graphics\Wizard\nsis3-metro.bmp" Command line defined: "MUI_UNWELCOMEFINISHPAGE_BITMAP=${NSISDIR}\Contrib\Graphics\Wizard\nsis3-metro.bmp" Command line defined: "ESTIMATED_SIZE=338749" Command line defined: "COMPRESS=auto" Command line defined: "BUILD_UNINSTALLER" Command line defined: "UNINSTALLER_OUT_FILE=D:\���\�ֻ����\1_1_h5-image-template-proj\dist_electron\__uninstaller-nsis-leidian.exee" Processing config: C:\Users\ASUS\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\nsisconf.nsh Processing script file: "<stdin>" (ACP) Error output: !include: could not find: "D:\外包\手机真机\1_1_h5-image-template-proj\node_modules\app-builder-lib\templates\nsis\include\StdUtils.nsh" Error in script "<stdin>" on line 1 -- aborting creation process at ChildProcess.<anonymous> (D:\外包\手机真机\1_1_h5-image-template-proj\node_modules\builder-util\src\util.ts:250:14) at Object.onceWrapper (node:events:628:26) at ChildProcess.emit (node:events:513:28) at ChildProcess.cp.emit (D:\外包\手机真机\1_1_h5-image-template-proj\node_modules\cross-spawn\lib\enoent.js:34:29) at maybeClose (node:internal/child_process:1100:16) at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5) { exitCode: 1, alreadyLogged: false, code: 'ERR_ELECTRON_BUILDER_CANNOT_EXECUTE' }解决这个报错
最新发布
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值