我想使用Python检索jpeg文件的位深度。
使用Python Imaging Library:
import Image
data = Image.open('file.jpg')
print data.depth
然而,对于明显的24位图像,这给了我8的深度。难道我做错了什么?有没有办法用纯Python代码做到这一点?
提前致谢。
编辑:这是data.bits而不是data.depth。
答案 0 :(得分:11)
我没有在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]
答案 1 :(得分:6)
Jpeg文件的具有位深度的方式与GIF或PNG文件的方式相同。用于创建Jpeg数据的变换在解压缩时呈现连续的色谱。
答案 2 :(得分:3)
PIL报告每个“波段”的比特深度。我实际上并没有将depth
视为PIL文档中的文档属性,但是,我认为您想要这样:
data.depth * len(data.getbands())
或者更好:
data.mode
有关详细信息,请参阅here。
答案 3 :(得分:2)
我打算说JPG图像是24位的定义。它们通常由三个8位颜色通道组成,红色,绿色和蓝色各一个,每像素24位。但是,我刚刚发现this page表明:
如果您使用更现代的Photoshop版本,您会发现它还可以让您以每个通道16位的速度工作,每个像素可以使用48位。
但我无法找到你如何分辨两者的参考。
答案 4 :(得分:0)
我想这就是您要的...您可以使用以下内容获取JPG或其他RGB或RGBA图像中使用的颜色计数
我个人使用此代码的变体来确定从RGB转换为索引模式是否有意义。
im = Image.open('/path/to/file.jpg')
depth = len(set(im.getdata()))