簡體   English   中英

如何僅使用標准庫以Python讀取任意圖像文件格式(PNG,JPEG,TIFF,BMP)?

[英]How do I read an arbitrary image file format (PNG, JPEG, TIFF, BMP) in Python using only the standard library?

我是一位經驗豐富的Python程序員,具有豐富的圖像處理和計算機視覺經驗。 我對PILPillowopencvnumpyscikit-image等所有標准工具都非常熟悉。

如果我只有標准庫可以使用,如何將圖像讀取為Python數據格式(如嵌套列表,字節數組或類似格式)?

我意識到不同的圖像格式具有不同的規格。 我的問題是,我什至會開始構建一個讀取任何給定格式的函數。

注意 Python 2.6在標准庫中有一個jpeg模塊,此模塊已被棄用。 我們不討論這一點,因為它不受支持。

如果您要問如何“從頭開始”實現這些格式(由於標准庫不這樣做),那么格式規范就是一個很好的起點。

對於PNG,這是https://www.w3.org/TR/2003/REC-PNG-20031110/ 它定義了一個PNG流的組成,包括簽名(八個字節, 8950 4e47 0d0a 1a0a ,將文件標識為PNG圖像)以及許多包含元數據,調色板信息和圖像本身的數據塊。 (如果您確實不想使用現有的庫,但絕對不要過度使用,那肯定是一個需要承擔的重大項目。)

對於BMP,這有點容易,因為文件已經包含未壓縮的像素數據,並且您只需要知道如何找到大小和偏移量即可; 一些格式定義在Wikipedia( https://en.wikipedia.org/wiki/BMP_file_format )上,在這里: http : //www.digicamsoft.com/bmp/bmp.html

JPG比較棘手。 該文件不存儲像素,而是存儲“小波”,這些小波將轉換為您在屏幕上看到的像素圖。 要讀取此格式,您需要實現此轉換功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM