Как определить достаточный формат (тип данных) для QImage, чтобы потреблять минимум оперативной памяти? - PullRequest
0 голосов
/ 10 ноября 2019

Я хочу использовать минимальный объем ОЗУ при загрузке изображения в QImage в Qt, если у нас нет никакой информации о точках на дюйм или типе (RGB16 или RGBA32 или ...) изображения в заголовке изображения.

Любая идея, код или метод для автоматического определения типа изображения, например ( QImage :: Format_RGB32 или QImage :: Format_RGB16 или ...) для QImage

1 Ответ

1 голос
/ 10 ноября 2019

QImage наследует QPaintDevice . Это не двоичный формат изображения и не содержит ничего подобного. Представьте это как часть памяти с некоторыми методами и свойствами-членами, которые могут объяснить содержимое этой памяти или как вы можете рисовать пиксели на этой части памяти. Например, метод QImage :: load будет использовать экземпляр QImageReader для загрузки файла изображения, такого как JPG, PNG, BMP и т. Д., И инициализирует все необходимое для QImage чтобы хранить эти данные. QImageReader может автоматически определять формат изображения. Затем вы сможете преобразовать этот экземпляр QImage , используя QImage :: convertToFormat метод.

QImage img;
img.load("/some/path/to/sample.png");
QImage converted = img.convertToFormat(QImage::Format_RGB16);
...