2010-01-03 93 views
5

我想使用Python檢索jpeg文件的位深度。如何獲得jpg文件的深度?

使用Python圖像庫:

import Image 
data = Image.open('file.jpg') 
print data.depth 

然而,這給了我8爲明顯的24位圖像的深度。難道我做錯了什麼?有沒有辦法用純Python代碼做到這一點?

在此先感謝。

編輯:這是data.bits而不是data.depth。

+0

您確定您使用的是正確的功能嗎?我無法在PIL手冊中找到深度,也許8的返回值仍然正確 - 它可能代表「每像素8位」。 – schnaader 2010-01-03 22:45:28

+0

是的,它是8 bpp。根據邁克的回答,對於每個樂隊來說,並不明顯(對我而言)。 – needthehelp 2010-01-03 22:52:55

回答

8

我沒有看到Python Imaging Library handbook中任何地方記錄的depth屬性。但是,它似乎只支持有限數量的modes。你可以使用這樣的東西:

mode_to_bpp = {'1':1, 'L':8, 'P':8, 'RGB':24, 'RGBA':32, 'CMYK':32, 'YCbCr':24, 'I':32, 'F':32} 

data = Image.open('file.jpg') 
bpp = mode_to_bpp[data.mode] 
5

Jpeg文件不具有具有位深度的方式與GIF或PNG文件相同。用於創建Jpeg數據的轉換在解壓縮時呈現連續的色譜。

3

PIL報告每個「帶」的位深度。其實我不看depth作爲PIL的文檔文件化屬性,但是,我想你想要這樣的:

data.depth * len(data.getbands()) 

或者更好的是:

data.mode 

更多信息,請參見here

1

我想說的是,JPG圖像是24位的定義。它們通常由三個8位色彩通道組成,每個紅色,綠色和藍色每個像素24位。不過,我只是發現this page其中規定:

如果您使用Photoshop的更現代的版本,你會發現它也將讓你在每通道16位的工作,它給你48位每像素。

但我無法找到一個參考你如何分辨兩者。