2

以下のコードが Qt の QImage を変更する理由を理解しようとしています。(まだ) 何かをするためのものではなく、テスト用です。アルファ付きの画像でコードを実行すると、アルファ チャネルが失われ、黒い背景に置き換えられます。

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(...)とおりです。

ここに画像の説明を入力

そして、これが次のimage.setPixel(...)行の結果です。

ここに画像の説明を入力

私のコードは画像を変更しないと思います。なぜこれをやっているのですか?

4

1 に答える 1

3

setHsv()のドキュメントを見ると、明示的に指定しない場合、デフォルトで alpha が 255 (float バージョンの場合は 1.0) に設定されていることがわかります。

おそらく、ラインを使用するc.setHsv(c.hue(), c.saturation(), c.value(), c.alpha());と問題が解決します。

于 2011-08-08T17:19:47.820 に答える