Может ли QImage открывать и отображать чистые 16-битные изображения?
Вопрос
Думаю, заголовок уже объясняет то, что я хочу знать.
Есть ли возможный способ открывать и сохранять изображения в 16-битной версии с помощью Qt?И я не имею в виду 3*8=24 бита или 4*8=32 бита, что то же самое, что и чистое 8-битное изображение, я имею в виду чистые 16-битные изображения для R, G и B.
Решение
Вопреки тому, что говорит Патрис, в формате 16 бит на компонент не существует. QImage
.Максимум, что вы можете получить, это QImage::Format_ARGB32
по 8 бит на компонент.Даже если вы использовали 8-битный индексированный режим, таблицы цветов не поддерживают более 8 бит на компонент.Более того, QImageIOHandler
класс работает с точки зрения QImage
, поэтому, к сожалению, вы не можете создать плагин собственного формата изображения для работы с 16 битами на цветовой компонент.
Другие советы
Для этой цели вы можете использовать libpng (png++).
QImage::Format не определяет чистые 16 бит, но может определять 10 бит.
QImage::Format_A2RGB30_Premultiplied
(http://doc.qt.io/qt-5/qimage.html), может использовать 10 бит RGB на канал (0...1).
Но если использовать QImage::setPixel
они по-прежнему используют 8 бит на канал для определения пикселя из QColor
.
Как уже упоминалось, в Qt на данный момент нет формата с 16 битами на компонент.
Однако существует запрос на реализацию этого с прикрепленным патчем: https://bugreports.qt.io/browse/QTBUG-45858
Не уверен, каков статус этого проекта и будет ли он интегрирован.