<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bitmap</title>
	<atom:link href="https://www.aitaocui.cn/tag/230051/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Sat, 26 Nov 2022 22:29:45 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>Bitmap</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Bitmap(使用像素阵列来表示的图像)</title>
		<link>https://www.aitaocui.cn/article/341812.html</link>
					<comments>https://www.aitaocui.cn/article/341812.html#respond</comments>
		
		<dc:creator><![CDATA[哈啦]]></dc:creator>
		<pubDate>Sat, 26 Nov 2022 22:29:45 +0000</pubDate>
				<category><![CDATA[知识]]></category>
		<category><![CDATA[Bitmap]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=341812</guid>

					<description><![CDATA[BMP文件格式，又称为Bitmap（位图）或是DIB(Device-Independent Device，设备无关位图)，是Windows系统中广泛使用的图像文件格式。它将图像定义...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>BMP文件格式，又称为Bitmap（位图）或是DIB(Device-Independent Device，设备无关位图)，是Windows系统中广泛使用的图像文件格式。它将图像定义为由点（像素）组成，每个点可以由多种色彩表示，包括2、4、8、16、24和32位色彩。例如，一幅1024×768分辨率的32位真彩图片，其所占存储字节数为：1024×768×32/8=3072KB位图文件图像效果好，但是非压缩格式的，需要占用较大存储空间，不利于在网络上传送。jpg格式则恰好弥补了位图文件这个缺点。bmp格式的文件转换为jpg格式的文件可以大大减小文件所占存储空间。</p>
</article>
<article>
<h1>定义</h1>
<p>typedef struct tagBITMAP{</p>
<p>LONG bmType;//位图类型，必须为0</p>
<p>LONG bmWidth;//位图宽度</p>
<p>LONG bmHeight; //位图高度</p>
<p>LONG bmWidthBytes;//每一行像素所在的byte数</p>
<p>WORD bmPlanes;//颜色平面数</p>
<p>WORD bmBitsPixel;//像素的位数</p>
<p>LPVOID bmBits;//位图内存指针</p>
<p>}BITMAP;</p>
<h1>位图图像</h1>
<p>位图是位的数组，它制订了像素矩阵中各像素的颜色。亦称为点阵图像或绘制图像，是由称作像素（图片元素）的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时，可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增多单个像素，从而使线条和形状显得参差不齐。</p>
<p>然而，如果从稍远的位置观看它，位图图像的颜色和形状又显得是连续的。在体检时，工作人员会给你一个本子，在这个本子上有一些图像，而图像都是由一个个的点组成的，这和位图图像其实是差不多的。由于每一个像素都是单独染色的，您可以通过以每次一个像素的频率操作选择区域而产生近似相片的逼真效果，诸如加深阴影和加重颜色。缩小位图尺寸也会使原图变形，因为此举是通过减少像素来使整个图像变小的。同样，由于位图图像是以排列的像素集合体形式创建的，所以不能单独操作（如移动）局部位图。</p>
<p>位图文件图像效果好，但是非压缩格式的，需要占用较大存储空间，不利于在网络上传送。jpg格式则恰好弥补了位图文件这个缺点。</p>
<p>bmp格式的文件转换为jpg格式的文件可以大大减小文件所占存储空间。最简单的方法是，用画图打开一个bmp格式的图片，另存为jpg格式的就行了。</p>
<h1>分辨率</h1>
<p>处理位图时，输出图像的质量决定于处理过程开始时设置的分辨率高低。分辨率是一个笼统的术语，它指一个图像文件中包含的细节和信息的大小，以及输入、输出、或显示设备能够产生的细节程度。操作位图时，分辨率既会影响最后输出的质量也会影响文件的大小。处理位图需要三思而后行，因为给图像选择的分辨率通常在整个过程中都伴随着文件。无论是在一个300 dpi的打印机还是在一个2570dpi的照排设备上印刷位图文件，文件总是以创建图像时所设的分辨率大小印刷，除非打印机的分辨率低于图像的分辨率。如果希望最终输出看起来和屏幕上显示的一样，那么在开始工作前，就需要了解图像的分辨率和不同设备分辨率之间的关系。显然矢量图就不必考虑这么多。</p>
<h2 id="a-593a61b6">RGB</h2>
<p>位图颜色的一种编码方法，用红、绿、蓝三原色的光学强度来表示一种颜色。这是最常见的位图编码方法，可以直接用于屏幕显示。</p>
<h2 id="a-88c4bce6">CMYK</h2>
<p>位图颜色的一种编码方法，用青、品红、黄、黑四种颜料含量来表示一种颜色。常用的位图编码方法之一，可以直接用于彩色印刷。</p>
<h1>索引颜色</h1>
<p>位图常用的一种压缩方法。从位图图片中选择最有代表性的若干种颜色（通常不超过256种）编制成颜色表，然后将图片中原有颜色用颜色表的索引来表示。这样原图片可以被大幅度有损压缩。适合于压缩网页图形等颜色数较少的图形，不适合压缩照片等色彩丰富的图形。</p>
<h2 id="a-497d601a">通道</h2>
<p>在原有的图片编码方法基础上，增加像素的透明度信息。图形处理中，通常把RGB三种颜色信息称为红通道、绿通道和蓝通道，相应的把透明度称为Alpha通道。多数使用颜色表的位图格式都支持Alpha通道。</p>
<h2 id="a-ae6f5110">色彩深度</h2>
<p>色彩深度又叫色彩位数，即位图中要用多少个二进制位来表示每个点的颜色，是分辨率的一个重要指标。常用有1位（单色），2位（4色，CGA），4位（16色，VGA），8位（256色），16位（增强色），24位和32位（真彩色）等。色深16位以上的位图还可以根据其中分别表示RGB三原色或CMYK四原色（有的还包括Alpha通道）的位数进一步分类，如16位位图图片还可分为R5G6B5，R5G5B5X1（有1位不携带信息），R5G5B5A1，R4G4B4A4等等。</p>
<h1>算法</h1>
<p>来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value，而Key即是该元素。由于采用了Bit为单位来存储数据，因此在存储空间方面，可以大大节省。</p>
<p>如果说了这么多还没明白什么是Bit-map，那么我们来看一个具体的例子，假设我们要对0-7内的5个元素(4,7,2,5,3)排序（这里假设这些元素没有重复）。那么我们就可以采用Bit-map的方法来达到排序的目的。要表示8个数，我们就只需要8个Bit（1Bytes），首先我们开辟1Byte的空间，将这些空间的所有Bit位都置为0，然后遍历这5个元素，首先第一个元素是4，那么就把4对应的位置为1（可以这样操作p+(i/8)|(0×01&lt;&lt;(i%8))当然了这里的操作涉及到Big-ending和Little-ending的情况，这里默认为Big-ending）,因为是从零开始的，所以要把第五位置为1。</p>
<p>然后再处理第二个元素7，将第八位置为1,，接着再处理第三个元素，一直到最后处理完所有的元素，将相应的位置为1。</p>
<p>然后我们现在遍历一遍Bit区域，将该位是一的位的编号输出（2，3，4，5，7），这样就达到了排序的目的。</p>
<p>其实就是把计数排序用的统计数组的每个单位缩小成bit级别的布尔数组</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/341812.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
