bmp格式转为jpeg格式文件

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()

其实这是信息论相关的内容,但是这个没有涉及到信息论相关知识。。。晕

原文地址:https://www.cnblogs.com/serendipity-my/p/13804708.html