Я хочу получить битовую глубину для jpeg файла с помощью Python.
Пользование библиотекой обработки изображений Python:
import Image
data = Image.open('file.jpg')
print data.depth
Однако это дает мне глубину 8 для очевидно 24-разрядного изображения. Я делаю что-то не так? Там некоторый путь состоит в том, чтобы сделать это с чистым кодом Python?
Заранее спасибо.
Править: Это - data.bits не data.depth.
Я не вижу атрибута 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]
PIL сообщает битовую глубину в "диапазоне". На самом деле я не вижу depth
как документированного свойства в PIL документах, однако, я думаю, что вы хотите этого:
data.depth * len(data.getbands())
Или еще лучше:
data.mode
Смотрите здесь для дополнительной информации.
.Я хотел сказать, что JPG-изображения по определению 24 бита. Обычно они состоят из трех 8-ми битных цветовых каналов, по одному на каждый из красного, зеленого и синего, что составляет 24 бита на пиксель. Однако, я только что нашел эту страницу , которая гласит:
Если вы используете более современную версию Photoshop, вы заметите, что она также позволит вам работать в 16 бит на канал, что дает вам 48 бит на пиксель.
Но я не могу найти ссылку на то, как вы могли бы отличить эти два канала.
.Файлы Jpeg не имеют битовой глубины так же, как файлы GIF или PNG. Преобразование, используемое для создания данных Jpeg, визуализирует непрерывный цветовой спектр при распаковке.