請編寫一個bmpinfo.py,可以檢查任意檔案是否是點陣圖檔案,如果是,打印出圖片大小和顏色數——python學習筆記
阿新 • • 發佈:2019-01-06
1. 題目:
請編寫一個bmpinfo.py,可以檢查任意檔案是否是點陣圖檔案,如果是,打印出圖片大小和顏色數
題目是廖雪峰老師的python教程中struct的練習。
本篇博文只是針對這一題目,沒有做詳細的介紹,如果看不懂可以在下面評論問我,我會及時回覆的,或者可以去看一下廖雪峰老師的python教程中struct這一節。
2. 程式碼如下:
# -*- coding: utf-8 -*-
import base64
import struct
def bmp_info(data):
info = struct.unpack('<ccIIIIIIHH' , data[:30])
# struct.unpack 如果不明白的可以在廖雪峰老師的python課程中仔細看看,通俗理解就是將二進位制資料解析出來
if info[0] == b'B' and (info[1] == b'M' or info[1] == b'A'):
# 這裡是做相應的判斷,判斷是否為點陣圖
return {
'width': info[6],
'height': info[7],
'color': info[9]
}
# 測試
bmp_data = base64.b64decode('Qk1oAgAAAAAAADYAAAAoAAAAHAAAAAoAAAABABAAAAAAADICAAASCwAAEgsAAAAAAAAAAAAA/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9/AHwAfAB8AHwAfAB8AHwAfP9//3//fwB8AHwAfAB8/3//f/9/AHwAfAB8AHz/f/9//3//f/9//38AfAB8AHwAfAB8AHwAfAB8AHz/f/9//38AfAB8/3//f/9//3//fwB8AHz/f/9//3//f/9//3//f/9/AHwAfP9//3//f/9/AHwAfP9//3//fwB8AHz/f/9//3//f/9/AHwAfP9//3//f/9//3//f/9//38AfAB8AHwAfAB8AHwAfP9//3//f/9/AHwAfP9//3//f/9//38AfAB8/3//f/9//3//f/9//3//fwB8AHwAfAB8AHwAfAB8/3//f/9//38AfAB8/3//f/9//3//fwB8AHz/f/9//3//f/9//3//f/9/AHwAfP9//3//f/9/AHwAfP9//3//fwB8AHz/f/9/AHz/f/9/AHwAfP9//38AfP9//3//f/9/AHwAfAB8AHwAfAB8AHwAfAB8/3//f/9/AHwAfP9//38AfAB8AHwAfAB8AHwAfAB8/3//f/9//38AfAB8AHwAfAB8AHwAfAB8/3//f/9/AHwAfAB8AHz/fwB8AHwAfAB8AHwAfAB8AHz/f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//38AAA==' )
bi = bmp_info(bmp_data)
assert bi['width'] == 28
assert bi['height'] == 10
assert bi['color'] == 16
print('ok')
希望能夠幫助到大家,有什麼問題可以 直接評論即可,如果不夠詳細的話也可以說,我會及時回覆的。