主页 > 网站权重 >

位图是什么格式(落位图是什么意思)

作者 木星SEO · 发布日期 2021-05-16 · 来源 未知

与朋友聊天,谈论大数据存储和搜索方法,朋友提到“位图”。因此,我能想到的只有“位图-矢量图”和“矢量图-位图”。这个“位图”和那个不同吗?

首先,这个“位图”不是另一个“位图”

你为什么会有这样的疑虑?这是因为位图可以是图片类型或数据结构的位图。我们将逐一分析位图,并从这两个角度全面掌握位图的概念。

第二,位图

位图,也称为点阵图像、像素图或光栅图像,由单个像素点(像素)组成。这些点可以不同地排列和染色形成图案。

位图单位:像素

像素:它是指可以显示亮度甚至颜色变化的点,是构成数字图像的最小单位。像素有相同的大小,亮度和颜色的变化。其特征在于固定的位置和特定的颜色值。

位图具有以下特征:

1.位图图像善于再现色彩的细微层次,并能产生色彩和亮度变化丰富的图像;

2.文件很大,不能随意缩放;

3.打印和输出的准确性有限;

4.图形区域越大,文件的字节越多;

5.文件的颜色越丰富,文件的字节越多。

位图有许多文件类型,例如:

*。bmp 、*。pcx 、*。gif 、*。jpg 、*。标签图像文件格式。

*。psd、柯达照片

*。pcd、corel照片

*。cpt

第三,矢量图

让我们再来看一下矢量图:矢量也叫“矢量”,矢量图中的图形元素(点和线段)叫做对象,每个对象都是一个独立的个体,具有大小、方向、轮廓、颜色和屏幕位置等属性。

简单地说,矢量图形软件使用数学方法来绘制基本形状,如矩形。

矢量图具有以下特征:

1.矢量图形能再现清晰的轮廓,线条非常流畅,扩展性好;

2.由于线和块的信息存储在图像中,这与分辨率和图形大小无关,而只与图像的复杂度有关,所以图像文件占用的存储空间很小;

3.较强的编辑能力;

4.与位图相比,它的显示和打印速度要快得多;

5.缺点是图形不真实,颜色不鲜明;

大致的格式是:

*。cdr 、*。大赦国际、*。EPS、*。dwg 、*。wmf 、*。电动势

然而,将位图转换成矢量图需要复杂而庞大的数据处理,生成的矢量图的质量永远无法与原始图相比。

第四,位图的存储格式

由于这篇文章的主题是位图,我们将重点写位图。

众所周知,每张图片都是根据它的大小来存储的,也就是图像的长度、宽度和像素大小。如果图像的像素是100*100,则图像在存储器中的存储是100*100阵列,并且每个阵列的元素是整数(整数占用4字节)。

需要补充一些知识:数组中每个元素的整数包含四位信息:r-g-b-a。

1.R:存储红色通道(占一个字节,值为0~255)

2.G:绿色通道颜色(一个字节0~255)

3.B:蓝色通道(一个字节0~255)

4.a: alpha通道值,即该位置像素的透明值(占一个字节的0~255)

其中,RGB是自然界的三原色,任何颜色都可以通过RGB的组合来表达。

让我们举个例子。让我们假设以下数组:

{0xffff0000,0xffff0000,0xffff0000,0xffff0000},

{0xffff0000,0xffff0000,0xffff0000,0xffff0000},

{0xffff0000,0xffff0000,0xffff0000,0xffff0000},

{0xffff0000,0xffff0000,0xffff0000,0xffff0000},

这意味着这是一张4*4像素的全红色图片。屏幕上的一个像素非常小。当许多不同的像素有规律地排列在一起,形成一个行列阵列时,我们就能看到图像。

Png和Jpeg等图像加入了基于该方法的压缩算法,方便了人们的携带和存储。

5.如何计算

在阅读了上面的解释后,我们现在有了一个大致的了解,你一定对图片大小是如何计算的很好奇。

图片占用的内存=图片长度*图片宽度*单位像素占用的字节数

1.为了便于说明,让我们举一个例子:一个32位的1204*1024像素的巴布亚新几内亚,那么占用的空间是:

1024*1024*(32/8)

因为8位=1字节,32位是4字节。

2.在这里,添加字节的概念:字节(Byte/bait/n[C])是计算机信息技术用来测量存储容量的测量单位。通常,一个字节等于八位,这在某些计算机编程语言中也代表数据类型和语言字符。

六.面试问题:100*100的画布占用多少内存?

巧合的是,我在掘金看到了这样一个采访问题。作者解释说:

当我们定义颜色时,我们使用rgba(r,g,b,a)来表示它,每个像素值由16位00-ff表示。

也就是说,每个维度的范围是0~255,也就是2 8位,也就是1字节,也就是Uint8可以代表的范围。

因此,100 * 100画布占用的内存是100 * 100 * 4字节=40,000字节。

这类似于我们上面提到的原则。让我们再回顾一下:如果图像的像素是100*100,图像的内存是100*100数组,每个数组的元素是整数(整数占4个字节)。

七.扩展:数码相机的原理

数码相机对500瓦像素的所谓支持意味着这一点,这意味着它可以处理多少图形颜色信息。像素越高,处理时间越长,因为阵列非常大。

1.让我们举一个简单的例子:

假设有一张500瓦像素数码相机拍摄的照片。这张图片的实际容量是500万x3=1500万=15万亿。为什么要乘以3?因为数码相机中的光敏ccd通过红色、绿色和蓝色通道,最终图像容量将乘以3。

如果对图片的要求很高,可以使用tiff格式进行存储,因此文件列表中显示的500瓦像素摄像头拍摄的实际容量为15M的图片的文件大小为15M。

2.为什么图片占用的计算内存与实际图片大小不一致?

内存中的数据与文件中的数据不同,内存主要是解码后各点的数据;

文件数据取决于您的格式、压缩率、文件头、附加信息等;

八、位图的数据结构(位图)

位图用一个位标记对应于一个元素的值,键是元素。因为数据是以位存储的,所以可以大大节省存储空间。

让我们举一个具体的例子。假设我们想在0-7范围内对五个元素(4,7,2,5,3)进行排序(这里,假设这些元素没有重复)。然后我们可以用位图的方法来达到排序的目的。

本文给出了位图排序的算法,感兴趣的学生可以移动:什么是位图?

九.情况分析

1.让我们来看看这样一个场景:给定一台普通的2G内存的电脑,它需要处理一个包含40亿个非重复和无序整数的无符号整数,给出一个整数,并询问您是否可以快速判断这个整数是否在文件中的40亿个数据中。

2.思考这个问题:

40亿整数(40亿*4)/1024/1024/1024约为14.9克,显然内存只有2G,所以不可能将这40亿数据放入内存进行计算。

快速解决这个问题的最好方法是将数据放入内存,所以现在的问题是如何在2G内存空间中存储40亿个整数。整数占用4个字节,即32位。如果一位可以用来识别整数,存储空间将大大减少。

计算40亿个整数所需的内存空间为40亿/8/1024/1024,约为476.83兆字节,这样我们就可以将这40亿个整数放入内存进行处理。

3.具体想法:

一个int占用4个字节,即4*8=32位,所以我们只需要申请一个长度为int tmp[1 N/32]的int数组来存储这些数据,其中N代表要搜索的总数,tmp中的每个元素占用32位内存,可以对应十进制数0~31,这样就可以得到位图表:

Tmp[0]:可以代表0~31

Tmp[1]:可以代表32~63

Tmp[2]可代表64~95

.

4.接下来让我们看看十进制数是如何转换成相应的位的:

假设40亿int数据是:6,3,8,32,36,则特定的位图表示为:

5.如何判断整数的哪个下标在tmp数组中,可以直接除以32得到整数部分。例如,如果整数8除以32被舍入为等于0,则8在tmp[0]上。另外,我们如何知道32位8中的哪一位在tmp[0]中?在这种情况下,32直接在mod上是可以的,如果32等于tmp[0]中第8个MOD上的8,则整数8在tmp[0]中的第8位(从右边开始计数)。

事实上,位图可以在很多应用中使用,比如压缩,在爬虫系统中删除url重复,以及解决完全组合的问题。有些人可能认为位图算法实现起来有点麻烦。事实上,有些语言封装了位图算法。例如,在java中,数据结构中有一个与位图相对应的bitset类。

十、海量数据解决方案

《数据结构:位图法》这篇文章提到了几种解决海量数据的方法:

1.如何通过给出40亿个不重复的无符号整数(没有排序),然后给出另一个数,来快速判断这个数是否在40亿个数中?

想法:首先,将这40亿个数字存储在位图中,然后判断给定的数字是否在位图中。

2.使用位图方法判断形状数组中是否有重复。

答:遍历数组,将它一个一个地放入位图中,并检查它是否出现在位图中。如果它没有出现,它就是一个重复的元素。

3.如何用位图法对形状数组进行排序?

首先遍历数组得到数组的最大值和最小值,然后根据最大值和最小值缩小位图的范围。这里应该注意的是,负数的int应该转换成无符号的int,取位时应该从这些数字中减去最小值。

4.在2.5亿个整数中找出不重复的整数?(注意:内存不足以容纳这2.5亿个整数)

一种参考方法是使用2位位图(每个数字分配2位,00表示不存在,01表示出现一次,10表示多次,11表示无意义)。实际上,这里可以使用两个常用的位图,即第一个位图存储一个整数是否出现,如果它再次出现,可以在第二个位图中设置。这样,您可以使用简单的1位图。

XI。扩展:计算机32位和64位操作系统

1.首先澄清概念:

事实上,当我们谈论32位和64位时,我们指的是中央处理器一次处理多少位数据。对于32位的中央处理器,它一次只能处理32位(即4字节)的数据;

而64位中央处理器一次可以处理64位(即8字节)数据。就数据处理能力而言,64位是32位的两倍,64位比32位更好。

2.特征

64位中央处理器具有更强的寻址能力,支持高达16GB的内存,而32位只支持4G内存;

64位中央处理器一次可以提取64位数据,是32位中央处理器的两倍。理论上,性能会翻倍。但这是基于64位操作系统和64位软件。

64位操作系统最初是为满足在机械设计和分析、3D动画、视频编辑和创作以及科学计算和高性能计算应用领域需要大量内存和浮点性能的客户需求而设计的,而32位系统在初始阶段并没有考虑太多。

3.原则

它表示32位和64位处理器在差分时钟周期内处理的二进制代码数。0和1是二进制码。如果线路上有电信号,则计为1,如果没有电信号,则计为0。8位机器有8条线,每个时钟周期有8个电信号,构成一个字节。

因此,随着8位处理器上升到64位处理器,每个时钟周期传输1字节到8字节。当时钟速度提高到几十亿赫兹后,处理器处理信息的能力就增强了。

X.参考

1.图片占用内存的计算方法

2.数据结构:位图方法

3.百科全书

4.图像存储原理

5.32位和64位操作系统

6.64位计算

来源:冯耀宗博客,欢迎分享这篇文章!