1. 程式人生 > 實用技巧 >bmp格式轉為jpeg格式檔案

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

其實這是資訊理論相關的內容,但是這個沒有涉及到資訊理論相關知識。。。暈