Проверка, есть ли у QImage альфа-канал - PullRequest
3 голосов
/ 28 мая 2011

Я хочу знать, содержит ли загруженный мной QImage альфа-канал. Я уже знаю, что QImage::hasAlphaChannel() может сказать мне, поддерживает ли используемый мной формат изображения альфа-каналы, но есть ли способ узнать, действительно ли он используется в загруженном изображении?

Ответы [ 2 ]

3 голосов
/ 28 мая 2011

Здесь у вас есть мой фрагмент для проверки, действительно ли используется альфа.Это полезно, когда изображение в формате ARGB32 .

bool useAlpha = false;
const uchar* pixelData = image.bits();
int bytes = image.byteCount();

for (const QRgb* pixel = reinterpret_cast<const QRgb*>(pixelData); bytes > 0; pixel++, bytes -= sizeof(QRgb)) {
    if (qAlpha(*pixel) != UCHAR_MAX) {
        useAlpha = true;
        break;
    }
}

Помните также, что существует метод format () .

1 голос
/ 28 мая 2011

Если формат, который вы загружаете QImage, имеет альфа-канал, ваш QImage имеет альфа-канал.

Если вы проверяете, действительно ли какой-либо пиксель в изображении с альфа-каналом устанавливает какой-либо пиксель в значение, отличное от непрозрачного, вы можете попробовать что-то вроде генерации альфа-маски с использованием QImage::createAlphaMask() и проверки значений его пикселей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...