Как я могу получить глубину jpg файла?

Я хочу получить битовую глубину для jpeg файла с помощью Python.

Пользование библиотекой обработки изображений Python:

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

Однако это дает мне глубину 8 для очевидно 24-разрядного изображения. Я делаю что-то не так? Там некоторый путь состоит в том, чтобы сделать это с чистым кодом Python?

Заранее спасибо.

Править: Это - data.bits не data.depth.

8
задан needthehelp 3 January 2010 в 22:40
поделиться

4 ответа

Я не вижу атрибута depth нигде в руководстве Python Imaging Library . Однако, похоже, что поддерживается только ограниченное количество режимов . Можно было бы использовать нечто подобное:

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]
12
ответ дан 5 December 2019 в 06:53
поделиться

PIL сообщает битовую глубину в "диапазоне". На самом деле я не вижу depth как документированного свойства в PIL документах, однако, я думаю, что вы хотите этого:

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

Или еще лучше:

data.mode

Смотрите здесь для дополнительной информации.

.
3
ответ дан 5 December 2019 в 06:53
поделиться

Я хотел сказать, что JPG-изображения по определению 24 бита. Обычно они состоят из трех 8-ми битных цветовых каналов, по одному на каждый из красного, зеленого и синего, что составляет 24 бита на пиксель. Однако, я только что нашел эту страницу , которая гласит:

Если вы используете более современную версию Photoshop, вы заметите, что она также позволит вам работать в 16 бит на канал, что дает вам 48 бит на пиксель.

Но я не могу найти ссылку на то, как вы могли бы отличить эти два канала.

.
2
ответ дан 5 December 2019 в 06:53
поделиться

Файлы Jpeg не имеют битовой глубины так же, как файлы GIF или PNG. Преобразование, используемое для создания данных Jpeg, визуализирует непрерывный цветовой спектр при распаковке.

7
ответ дан 5 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: