如何获得jpg文件的深度?

问题描述:

我想使用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

我没有看到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] 

Jpeg文件不具有具有位深度的方式与GIF或PNG文件相同。用于创建Jpeg数据的转换在解压缩时呈现连续的色谱。

PIL报告每个“带”的位深度。其实我不看depth作为PIL的文档文件化属性,但是,我想你想要这样的:

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

或者更好的是:

data.mode 

更多信息,请参见here

我想说的是,JPG图像是24位的定义。它们通常由三个8位色彩通道组成,每个红色,绿色和蓝色每个像素24位。不过,我只是发现this page其中规定:

如果您使用Photoshop的更现代的版本,你会发现它也将让你在每通道16位的工作,它给你48位每像素。

但我无法找到一个参考你如何分辨两者。