Технические вопросы и ответы QA1183

Какая глубина я должен вставить Описание Изображения?

Q: Есть ли какие-либо инструкции для значения поля глубины при создании Описаний Изображения?

A: Есть ли какие-либо инструкции для значения поля глубины при создании Описаний Изображения?

Программа управления сжатием изображений использует Описания Изображения для описания сжатых и несжатых данных изображения. Иногда они создаются для Вас API как MakeImageDescriptionForPixMap или GraphicsImportGetImageDescription. Однако иногда необходимо создать описание изображения сами.

depth поле описания изображения не всегда содержит литеральное число бит на пиксель. Вместо этого это должен быть размер пикселя QuickDraw, наиболее близко описывающий данные изображения. Это позволяет приложениям широко понять свойства сжатого изображения, не будучи должен знать определенные подробные данные. Информация о том, где истинная глубина сохранена, покрыта 'Разделом 2' этого документа.

Раздел 1 - поле глубины

При заполнении depth поле непосредственно, используйте следующее руководство:

Иначе используйте 24, если изображение не соответствует ни одного из вышеупомянутых критериев. Это - универсальный «цвет без альфа-канала» глубина.

Для форматов пикселя YUV без альфы используйте 24. Несмотря на то, что YUV9 составляет 9 бит на пиксель, YUV 4:2:0 составляет 12 бит на пиксель, и YUV 4:2:2 составляет 16 бит на пиксель, необходимо все еще использовать 24.

Следуйте вышеупомянутым инструкциям даже для форматов пикселя с выборками глубже, чем 8-разрядный. Например, 48-разрядный RGB должен использовать глубину 24, и 64-разрядный ARGB должен использовать глубину 32.

Таблица 1  быстрое сводное руководство

Тип изображения

Значение глубины для использования

Имеет альфа-канал

32

256 индексированных цветов - требуют CTable

8

16 индексированных цветов - требуют CTable

4

4 индексированных цвета - требуют CTable

2

2 индексированных цвета - требуют CTable

1

8-разрядный или более темно-полутоновый

40

4-разрядный или полутоновый

36

2-разрядный или полутоновый

34

1-разрядный или полутоновый

33

16-разрядный формат пикселя RGB - любой аромат

16

Форматы пикселя YUV без альфы

24

Цвет без альфа-канала - универсальная глубина

24

48-разрядный RGB

24

64-разрядный ARGB

32

32-разрядная шкала полутонов с альфой

32

16-разрядная шкала полутонов

40

QTGetPixelFormatDepthForImageDescription (доступный в QuickTime 6.0 и больше), возвращает надлежащий код глубины для любого зарегистрированного формата пикселя.

Раздел 2 - Где должен информация об истинной глубине быть сохраненной?

Когда рассматриваемые данные изображения являются несжатой пиксельной матрицей формата пикселя с обратным порядком байтов, который QuickDraw поддерживает (в частности, 1, 2, 4, 8, 16, 24, 32, 33, 34, 36, или 40), cType поле описания изображения должно быть kRawCodecType и depth поле (как обсуждено выше) должно быть форматом пикселя. Например, для 8-разрядной шкалы полутонов, cType поле должно содержать kRawCodecType и depth поле должно содержать 40.

Когда рассматриваемые данные изображения являются несжатой пиксельной матрицей формата пикселя non-QuickDraw, cType поле описания изображения должно быть кодом формата пикселя. Например, k2vuyPixelFormat ('2vuy'). В этом случае depth поле (как обсуждено выше) должно содержать 24. Для 16-разрядной шкалы полутонов, cType поле должно содержать k16GrayCodecType и depth поле должно содержать 40.

Когда рассматриваемые данные изображения сжаты, но имеют специальный собственный формат пикселя, в который они могут быть распакованы непосредственно, формат пикселя должен быть сохранен как OSType с обратным порядком байтов в расширении описания изображения типа kImageDescriptionColorSpace ('cspc'). Значение cType поле должно отразить способ, которым были сжаты данные изображения.

Например, файл PNG, содержащий изображение RGB на 48 бит на пиксель, был бы описан описанием изображения с a cType из kPNGCodecType ('png'), обратный порядок байтов kImageDescriptionColorSpace ('cspc') отображают расширение описания, содержащее OSType k48RGBCodecType ('b48r') и a depth поле (как обсуждено выше) содержащий значение 24.

Если для Вашего приложения нужна более подробная информация о зарегистрированных форматах пикселя, использовать ICMGetPixelFormatInfo.

Ссылки



История версии документа


ДатаПримечания
27.11.2006

передовая статья

15.08.2002

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