bmp格式转为jpeg格式文件
BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。
在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据
42 4d = BM 表示这是Windows支持的位图格式,开头两个字节必须为'BM'才是Windows位图文件
和文件大小一致
6-9 :这是两个保留段,为0。
A-D:00000436h = 1078。即从文件头到位图数据需偏移1078字节
0E-11:00000028h = 40,这就是说我这个位图信息头的大小为40个字节。
12-15:00000100h = 256,图像宽为255像素,与文件属性一致。
16-19:00000100h = 256,图像高为255像素,与文件属性一致。这是一个正数,说明图像数据是从图像左下角到右上角排列的。
1A-1B:0001h, 该值总为1。
1C-1D:0008h = 8, 表示每个像素占8个比特,即该图像共有256种颜色。
1E-21:00000000h,BI_RGB, 说明本图像不压缩。
22-25:00000000h,图像的大小,因为使用BI_RGB,所以设置为0。
26-29:00000000h,水平分辨率,缺省。
2A-2D:00000000h,垂直分辨率,缺省。
2E-31:00000100h = 256,说明本位图实际使用的颜色索引数为256,与1C-ID得到的结论一致。
32-35:00000100h = 256,说明本位图重要的颜色索引数为256,与前面得到的结论一致。
调色板其实是一张映射表,标识颜色索引号与其代表的颜色的对应关系
由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的
# coding:utf-8
import os
from PIL import Image
# bmp 转换为jpg,灰度图转RGB
def bmpToJpg_grayToRGB(file_path):
for fileName in os.listdir(file_path):
print(fileName)
newFileName = fileName[0:fileName.find(".bmp")]+".jpg"
print(newFileName)
im = Image.open(file_path+"\\"+fileName)
rgb = im.convert('RGB') #灰度转RGB
rgb.save(file_path+"\\"+newFileName)
# 删除原来的位图
def deleteImages(file_path, imageFormat):
command = "del "+file_path+"\\*."+imageFormat
os.system(command)
def main():
file_path = "G:\\study\\material\\images"
bmpToJpg_grayToRGB(file_path)
# deleteImages(file_path, "bmp")
if __name__ == '__main__':
main()
其实这是信息论相关的内容,但是这个没有涉及到信息论相关知识。。。晕