DDB与DIB】的更多相关文章

DB与DIB的区别是什么?觉得书上介绍的有点抽象.不容易理解.他们两者之间的区别的“物理意义” [“现实意义”]——姑且这么叫吧,呵呵!被这个问题困扰了很久,所以今天决定好好查资料总结一下,把它彻底搞清楚,也希望能对那些和我一样有着困惑的你 起到一点帮助.转入正题: [与位图相关的基础概念:] DDB位图(Device-dependent Bitmap):设备相关位图,也有书上称为GDI位图(Graphic Device Interface—图形设备接口). DIB位图(Device-indep…
DDB(设备相关位图) DDB依赖于具体设备:DDB的颜色模式必需与输出设备相一致.例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的.在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板.由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中 DIB的与设备无关性主要体现在以下两个方面:DIB的颜色模式与设备无关.例如,一个256色的DIB即可以在真彩色显示模式下使用,也可以在16色模式下使用.256色以下(包括2…
GDI/GDI+中只有对字体的外边框的测量,而没有提供对点,线,面,曲线的外边框获取函数.下面是本人利用DIB技术编写的探测简单图元,甚至也可以探测自己定义的复杂图元的外边矩形框的函数.本人已经测试,效果很棒. bool GetFeatureRange(void *object, //自己定义的图元对象 CRect rect, // DIB屏幕大小 CDC *pDC, //绘图设置 CRect &retVal // 检测范围 ) { CDC memDC; //临时绘图设备 COLORREF bk…
第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说明 hdc 设备环境句柄,可以为NULL. pInfoHdr 指向DIB信息头的指针,即BITMAPINFOHEADER fInit 0或CBM_INIT.CBM_INIT指定用后面3个参数来初始化DDB中的像素位 pBits DIB像素位的指针 pInfo DIB信息指针,即BITMAPINFO(…
设备无关位图即独立于设备的位图(DIB)与"Device-Dependent Bitmaps (DDB) 设备相关位图"相比,它不再依赖于具体的设备,从而更适合在不同的计算机之间传输和显示.它包含一个颜色表,颜色表描述像素值如何对应于RGB颜色值,其描述通过发光产生的颜色.因此,DIB可以在任何设备上实现适当的配色方案.DIB包含以下颜色和尺寸信息: 创建矩形图像的设备的颜色格式. 创建矩形图像的设备的分辨率. 创建图像的设备的调色板. 将红,绿,蓝(RGB)三元组映射到矩形图像中的像…
目录 第1章简介    1 1.1 DFB    1 1.2 DDB    1 1.3 DIB    2 第2章相关API    3 2.1 创建    3 2.1.1 CreateCompatibleBitmap    3 2.1.2 CreateBitmap    3 2.1.3 CreateBitmapIndirect    4 2.1.4 CreateDIBitmap    4 2.1.5 CreateDIBSection    5 2.1.6 小结    6 2.2 查询    6 2…
要将文件显示成图片这其中需要经过 1.将磁盘文件内容读取到内存: 2.将文件对应内存里包含的像素为以及像素信息转化为显示驱动器能理解的格式: 3.将转化过后的内存送到显卡的缓存区 4.显示器读取缓存现实于屏幕 在GDI中,WINDOWS不允许用户操作硬件,所以提供了用于显示位图文件到屏幕的API: SetDIBitsToDevice   直接将DIB显示到屏幕上 ( hdc, xDst, yDst,         (xDst,yDst)指定图片左上角的在屏幕上的坐标 cxSrc,       …
以前也遇到过bmp文件的读写.这篇博客很好,写的其他内容也值得学习. 参考:http://blog.csdn.net/xiajun07061225/article/details/6633938  学习 在读取bmp图片的时候,一定要注意内存对齐的问题,譬如文件头,否则无法读取出正确结果. 关于图片的像素数据,每一行的像素的字节数必须是4的整数倍.如果不是,则需要补齐.一般来说,bmp图像文件的数据是从下到上,从左到右的.即从文件中最先读到的是图像最下面一行的左边第一个像素,然后是坐标第二个..…
系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:实现VC单文档.对话框程序显示图片效果 CImage 是VC.NET中定义的一种MFC/ATL共享类,也是ATL的一种工具类,它提供增强型的(DDB和DIB)位图支持,可以装入.显示.转换和保存多种格式的图像文件,包括BMP.GIF.JPG.PNG.TIF等.CImage是一个独立的类,没有基类.(CImage类是基于GDI+的,从VC.NET起引进,VC 6.0中没有.)ATL (Active Temp…
朋友说在一个VC++6.0开发的项目中要增加打印窗体的功能,让帮忙写个代码供其调用. 这么老的IDE当然不想碰了,并且也不喜欢MFC笨拙不清晰的封装.所以决定採用纯Win32 API,然后用C++类简单封装一下. 1 基本思路 窗体DC和打印机DC是两类不兼容的DC.所以它们之间传送位图仅仅能通过DIB.首先,通过BitBlt()把要打印窗体的客户区复制到DDB内存位图中,然后通过GetDIBits()把DDB转换为DIB,最后通过StretchDIBits()向打印机DC输出. 2 代码实现…
前言          CImage类是基于GDI+的.可是这里为什么要讲归于GDI? 主要是基于这种考虑: 在GDI+环境中,我们能够直接使用GDI+ ,没多少必要再使用CImage类 可是,假设再GDI环境中,我们要想使用GDI+,有点麻烦.还得增加头文件.增加启动GDI+的代码和关闭GDI+的代码,显得太罗嗦了.GDI  的CBitmap 处理功能又有局限,仅仅能处理BMP格式的图片. 怎么办?这时.我们便可使用CImage类,由于这个类本身封装了GDI+得使用环境,所以无需我们手动设置,…
系统环境:Windows 7 软件环境:Visual Studio 2008 SP1 本次目的:实现VC单文档.对话框程序显示图片效果 CImage 是VC.NET中定义的一种MFC/ATL共享类,也是ATL的一种工具类,它提供增强型的(DDB和DIB)位图支持,可以装入.显示.转换和保存多种格式的图像文件,包括BMP.GIF.JPG.PNG.TIF等.CImage是一个独立的类,没有基类.(CImage类是基于GDI+的,从VC.NET起引进,VC 6.0中没有.) ATL (Active T…
计算机屏幕图像的截取在屏幕的录制.计算机远程控制以及多媒体教学软件中都是关键术,基于Windows操作系统有多种截屏方法,研究的重点集中在如何快速有效的截取DBI(Device-Independent Bitmap)格式的屏幕图形数据.现在商业软件流行的截屏技术主要采取的Api Hook技术,但这种技术一次截屏仍有较大的时间消耗,这样就对运行软件的硬件仍有较多的限制,而且是一种非标准的技术,不为微软公司所推荐. 1截屏技术 1.1使用api hook技术 使用api hook技术截屏基于一下的原…
windows支持两种位图格式,DDB(device-dependent bitmap),DIB(device-independent bitmap).设备相关位图用于windows显示系统中,其图像格式与显卡格式兼容,因此显示速度很快.设备不相关位图定义了位图的文件格式,用于位图传输,由于其数据格式可能与显卡格式不一致,直接使用设备不相关位图显示图像时需要进行转换,因此显示速度较慢. 历史上显卡支持16色或者256色,分别使用4位或者8位表示一个像素颜色.在16色系统中,仅支持黑白灰,红绿蓝,…
1.       当前Screen进行Copy屏幕,获得BITMAP 当前屏幕Copy.须要获取当前屏幕的HDC, 一种是直接从屏幕DC抓原始图. 一种是然后使用兼容MemDC进行抓图,然后能够附加图形的相关处理,如调整大小.如把鼠标绘制上去等. (注:假设是对当前程序Copy屏幕的话.传入GetDC參数使用 this->getsafehwnd()) (注:假设对指定窗体Copy屏幕的话,能够用Spy++获取窗体HWND,然后传入GetDC) 对于从程序抓原始图的方式比式比較简单,比如: //…
16.4.1自定义的 DIBSTRUCT结构体 字段 含义 PBYTE *ppRow ①指向位图视觉上最上面的一行像素.(不管是自下而上,还是自上而下) ②放在第一个字段,为的是后面定义宏时可方便访问到 int iSignature =“Dib ”,是这个结构体的标志 HBITMAP hBitmap 存储了由CreateDIBSection返回的位图句柄(注意,实质是DIB,但兼有DDB的特点,可直接BitBlt) BYTE *pBits 指向像素阵列的指针,其指针值在CreateDIBSect…
DDB(Device-dependent bitmap)依赖于具体设备,这主要体现在以下两个方面: DDB的颜色模式必需与输出设备相一致.例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的,即一个像素用一个字节表示. 在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板. 由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中. 11.3.1 DDB的创建 MFC的CBitmap类封装了DDB.该类提供了几个函数用来…
前面讲了为了提高DIB的显示性能和效率,我们将DIB转换成DDB.可是这又遇到一个问题.假设我想操作DIB的数据的话,显然是不能使用DDB:一是由于DIB转DDB时发生了颜色转换.再就是DDB无法直接提取指定像素点的数据.那么我们怎么办呢,Windows使用一种折中的方式来达到这一目标(既提高了显示效率和性能,又能够直接操作像素点). 1.DIB Section存储和显示 Windows使用DIB块(DIB Section)来存储DIB数据.其内存结构示意图例如以下 watermark/2/te…
參考文档: http://blog.csdn.net/hnust_xiehonghao/article/details/37652927 http://blog.sina.com.cn/s/blog_4c75bd8c0100zsw7.html Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源 绘制DIB图到到设备,明白一点.DIB设备无关图形向设备CDC上绘的话,肯定是须要经过图形pixel像素转换的,要转换成设备的颜色像素格式. 參考…
设备相关的位图(DDB)使用单一结构BITMAP结构描述.该结构的成员指定矩形区域的宽度和高度,以像素为单位;将条目从设备调色板映射到像素的数组的宽度;以及器件的颜色格式,在每个像素的颜色平面和位数方面.应用程序可以通过调用GetDeviceCaps函数并指定适当的常量来检索设备的颜色格式.请注意,DDB不包含颜色值;相反,颜色是依赖于设备的格式.有关详细信息,请参阅位图中的颜色.因为每个设备都可以有自己的颜色集,所以为一个设备创建的DDB可能在不同的设备上可能不会很好地显示.要在设备上下文中使…
设备无关位图(Device Independent Bitmap)是可以保存在磁盘的位图文件,可以从磁盘读取到内存或者从内存保存到磁盘上.它的文件结构是标准化的,可以在Windows/Linux/Unix等平台上显示相同的效果.本文主要介绍了 如果将位图文件从磁盘读到内存中 在内存中对位图文件进行操作后,如何将位图保存到磁盘 1 读取位图到内存中 1.1 DIB文件结构 要将位图文件(.bmp)从磁盘读取到内存,首先要了解其文件结构.DIB的文件组成有以下4个部分: 文件表头,主要包含了文件的类…
//接上一篇 //DibPal.h /*----------------------------------------------------------------- DIBPAL.H header file for DIBPAL.C -----------------------------------------------------------------*/ #pragma once; #include <windows.h> #include "DibHelp.h&q…
15.2.1 探究DIB (1)DIB文件的结构 整个文件 紧凑DIB(整个文件除文件头) 文件头(File Header) 信息头(Information Header) 信息头(Information Header) 颜色表(Color Table) 颜色表(Color Table) 像素位(Pixel Bits) 像素位(Pixel Bits) 注意:①紧凑DIB在内存中是连续的,即整个DIB存在单个内存块中 ②DIB载入内存时,像素位与信息头可以分别存在两个内存块,即内存不连续. (2)…
15.1 DIB文件格式(一种文件格式,扩展名为BMP) 15.1.1 OS/2风格的DIB 文件格式 字段 说明 文件头 (BITMAPFILEHEADER) 1.共14个字节 2.缩写建议用bmfh WORD  bfType 文件签名,表示位图文件,以0x4D42,即字母“BM”打头 DWORD bfSize 整个文件的大小(含文件头的大小).单位:字节 WORD  bfReserved1 以下这两个字段必须为0.鼠标指针文件,格式类似于DIB但这两个字段表示了“热点”的位置. WORD  …
Windows调色板是256色显卡时期的产物,如今显卡最少也是16bit的了.所以调色板基本上是用不到了的. 可是以下几种情况还是须要去使用和了解调色板: 1.在新显卡上保证256色兼容模式的正常执行 2.在256色显卡或低于256色显卡老机器上执行程序或在一些工业控制场合(为了节约成本可能採用256色显卡或低于256色显卡)执行程序 3.操作DIB的指定像素点数据 1.调色板是什么 相同採用以下一张图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd…
ZC: 搜索"DIB_HEADER_MARKER"时,看到的这个文章 http://blog.csdn.net/yyyuhan/article/details/2026652   查看文章     构造自己的DIB类 2007-05-05 11:44 MFC没有封装DIB,我们可以自己构造自己的DIB类,在这里我用的类名是CDibImage.里面我还添加了部分常用的图像处理函数.如点运算中的阈值变换函数ThresholdTrans()等等.希望对大家有所帮助.更重要的是理解,否则你是不…
一.Dib to Bitmap doesn't work in WPF 代码如下: protected byte[] BitmapFromDIB(IntPtr pDIB, IntPtr pPix) { MethodInfo mi = typeof(Bitmap).GetMethod("FromGDIplus", BindingFlags.Static | BindingFlags.NonPublic);   if (mi == null) return null;   IntPtr p…
if (formats.Contains(System.Windows.Forms.DataFormats.Dib)) { using (var img = System.Windows.Forms.Clipboard.GetImage()) { string fileName = Guid.NewGuid().ToString("N") + ".png";img.Save(fileName); } }…
针对dib制作的deploy image,注入密码有两种方式: devuser/dynamic-login .对应 dib 添加密码,是通过 dynamic-login element 来完成的. 首先制作带 dynamic-login 的映像: disk-image-create ironic-agent centos7 dynamic-login -o ironic-deploy centos7 可换为fedora或者ubuntu dynamic-login 的原理是在系统里起一个 dyna…
一.位图文件结构 位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据 1.位图文件头:BitMapFileHeader.位图文件头主要用于识别位图文件.以下是位图文件头结构的定义: typedef struct tagBITMAPFILEHEADER { // bmfh WORD    bfType;                   //bfType指定文件类型.其值必须是0x4d42,即字符串“MB”,也就是说所有“.bmp”文件的头两个字节都是”MB“,标志该文件是位图文件.…