Класс 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);

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

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий