01
PNG、JPG和BMP?
在学习导入图片和像素值之前,我们先讨论一个问题,为什么电脑中图片文件的格式会有JPG/PNG/BMP/....等不同格式呢?
首先我们明确一点,格式的不同不会变化图片的内容,比如三张图就是同张图片的三种不同格式:
既然内容一致,为什么电脑要区分不同格式的文件?答案是图片的压缩算法不同。BMP|JPG|PNG分别对应不同的图片压缩算法,所以它们在电脑硬盘中占用的空间也就各不同:
特别说明位图格式(BMP格式)使用的算法是我们上期所说的RPG格式+一个透明值,一个像素具有三种颜色的值+一个透明值的格式,在计算机种每个单独颜色值用一个字节(1 Byte)来存储,所以一个像素值就需要用四个字节(4 Byte,24bit)来表示,这样编码的图片也称作24位图片。
那么之前我们说过小米传说的1亿像素如果用BMP的格式来存放,一张图片需要多大的硬盘空间呢?
额,嗯,差不多382GB....
JPG和PNG是使用了其他的算法可以大幅减少硬盘的占用空间,感兴趣的同学可以自行搜索。
02
图片文件的读取(C#)
C#界面,Mircrosoft Visual Studio 2017
WPF界面,单击按钮可以选择导入图片,单击图片的任意位置可以将当前位置的像素信息提示在文本中。
软件演示
图片文件读取代码
Filter 过滤器设置(设置想要查看的文件格式)
RestoreDirectory 设置记录默认路径
ShowDialog() 打开对话框
03
像素值读取
注意,这里首先创建的是一个Image,Image不具有读像素的方法,因此我们把它赋值到一个Bitmap(位图类)中,来读取像素值。
Image.FromFile() 由文件创建Image
Bitmap.GetPixel() 读取像素值
小结
1. 计算机中的图片格式,BMP格式图片的编码方式
2. VS中读取图片的方法
3. VS中获取图片像素值的方法