你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
BMP图像切割存储技术与实现(四)
 

其中,WritePart是主体函数,实现对图像的切割和输出,其他5个函数直接或间接被该函数调用。

4  算法实现

4.1  WritePart函数

// m_LU:切割矩形的左上顶点;m_RB:切割矩形的右下顶点;pFile:修改后图形的输//出文件

BOOL CDib::WritePart(const CPoint& m_LU, const CPoint& m_RB, CFile* pFile)

{

    // 1) 修改BmpFileHeader结构

    BITMAPFILEHEADER bmfh;

    bmfh.bfType = 0x4d42;  // 'BM'

    int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries;

    bmfh.bfSize = 0;

    bmfh.bfReserved1 = bmfh.bfReserved2 = 0;

    bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +sizeof(RGBQUAD) * m_nColorTableEntries;  

 

    // 2) 修改BmpInfoHeader结构

    // 存储时需要的字节数,每行需要拷贝的字节数,偏移量

// 原始图像的每行的起始字节、起始位,行末终止字节、终止位

    int n_StartByte, n_StartBit, n_EndByte, n_EndBit;

    // 原图像每行占的字节数、目标图像每行字节数,切割后图像的高度

    int n_OriRowByte, n_DesRowByte, n_Height;

    // 由原图像的biBitCount、切割矩形的左上、右下顶点位置,计算切割图像所需要的相关参数

    GetParam(m_lpBMIH->biBitCount, m_LU, m_RB, n_StartByte, n_StartBit, n_EndByte, n_EndBit, n_OriRowByte, n_DesRowByte);

    // 每次从原图像向目标图像拷贝时需处理的字节数

    int n_CopyByte = n_EndByte - n_StartByte + 1;

    n_Height = m_lpBMIH->biHeight;

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089