1. 程式人生 > >請編寫一個bmpinfo.py,可以檢查任意檔案是否是點陣圖檔案,如果是,打印出圖片大小和顏色數——python學習筆記

請編寫一個bmpinfo.py,可以檢查任意檔案是否是點陣圖檔案,如果是,打印出圖片大小和顏色數——python學習筆記

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

希望能夠幫助到大家,有什麼問題可以 直接評論即可,如果不夠詳細的話也可以說,我會及時回覆的。