Почему этот код заставляет QImage терять свой альфа-канал? - PullRequest
2 голосов
/ 08 августа 2011

Я пытаюсь понять, почему код ниже меняет QImage в Qt.Это ничего не значит (пока), это просто для тестирования.Когда я запускаю код на изображении с альфа-каналом, альфа-канал теряется и заменяется черным фоном.

QImage image;
image.load("image.png");

for (int y = 0; y < image.height(); y++) {
    for (int x = 0; x < image.height(); x++) {
        QColor c = QColor::fromRgba(image.pixel(x, y));
        c.setHsv(c.hue(), c.saturation(), c.value());
        image.setPixel(x, y, c.rgba());
    }
}

Вот результат, когда я закомментирую строку image.setPixel(...):

enter image description here

И вот результат со строкой image.setPixel(...):

enter image description here

Я ожидаю, что мой код не изменится на изображении,Есть идеи, почему он это делает?

1 Ответ

3 голосов
/ 08 августа 2011

Если вы посмотрите документацию setHsv () , вы увидите, что по умолчанию для alpha установлено значение 255 (или 1,0 для плавающей версии), если вы не укажете это явно.

Возможно, использование строки c.setHsv(c.hue(), c.saturation(), c.value(), c.alpha()); решит вашу проблему.

...