Шаг 216.
Библиотека Qt.
Класс QImage

    На этом шаге рассмотрим класс QImage.

    Класс QImage является основным классом для контекстно-независимого представления растровых изображений. Этот класс унаследован от класса контекста рисования QPaintDevice, что позволяет использовать все методы рисования, определенные в классе QPainter.

    Класс QImage предоставляет поддержку для форматов, указанных в табл. 1.

Таблица 1. Перечисление языка Си Format класса QImage
Константа
Описание
Format_Invalid
Растровое изображение недействительно
Format_Mono
Каждый пиксел представлен одним битом. Биты укомплектованы в байте таким образом, что первый является старшим разрядом
Format_MonoLSB
Каждый пиксел представлен одним битом. Биты укомплектованы в байте таким образом, что первый является младшим разрядом
Format_Index8
Данные растрового изображения представляют собой 8-битные индексы цветовой палитры
Format_RGB32
Каждый пиксел представлен тридцатью двумя битами. Однако значение для альфа-канала всегда равно значению 0xFF, т. е. непрозрачно
Format_ARGB32
Каждый пиксел представлен 32 битами
Format_ARGB32_Premultiplied
Практически идентичен формату Format_ARGB32, но код оптимизирован для использования объекта QImage в качестве контекста рисования

    Значение формата можно узнать с помощью метода format(). Для конвертирования растрового изображения из одного формата в другой предусмотрен метод convertToFormat(), который возвращает новый объект QImage.

    Чтобы создать объект этого класса, необходимо в конструктор передать ширину, высоту и формат растрового изображения. Например, следующая строка создает растровое изображение шириной 320 и высотой 200 пикселов и глубиной цвета 32 бита.

QImage img(320, 240, QImage::Format_RGB32);

    Содержимое для объекта QImage также можно считать из файла, хранящего растровое изображение, передав имя файла в конструктор при создании объекта класса QImage. Если данный графический формат поддерживается Qt, то данные будут загружены и автоматически установится ширина, высота и формат. Например:

QImage img("koala.jpg");

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

#include "image_xpm.h"
...
QImage img(image_xpm);

    В качестве альтернативы можно воспользоваться методом load() для считывания файла. Первым параметром передается имя файла, а вторым — формат. Формат файла обозначается строкой типа unsigned char*, принимающей одно из следующих строковых значений: GIF, BMP, JPG, XPM, XBM или PNG. Если во втором параметре вообще ничего не передавать, то класс QImage попытается распознать графический формат самостоятельно. Например:

QImage img;
img.load("koala.jpg");

    При помощи метода save() можно сохранять растровое изображение из объекта класса QImage в файл. Первым параметром передается имя файла, а вторым — формат, в котором он должен быть сохранен. Например:

QImage img(320, 240, 32, QColor::blue);
img.save("blue.jpg", "JPG");

    Класс QImage позволяет изменить или получить цвета пикселов растрового изображения. RGB-значение пиксела с координатами (X, Y) можно получить с помощью метода pixel(x, y). Для записи RGB-значения используется структура данных QRgb. Например:

QRgb rgb = img.pixel(250, 100);

    Установить пикселу с координатами (X, Y) новое RGB-значение можно методом setPixel(x, y, rgb).

    Например:

QRgb rgb = qRgb(200, 100, 0);
img.setPixel(20, 50, rgb);

    На следующем шаге рассмотрим пример изменения яркости изображения.




Предыдущий шаг Содержание Следующий шаг