2011-08-08 23 views
2

我想了解爲什麼下面的代碼改變了Qt中的QImage。這並不意味着要做任何事情(但),它只是用於測試。當我運行帶有alpha的圖像上的代碼時,alpha通道會丟失並被黑色背景所取代。這段代碼爲什麼會讓QImage失去它的alpha通道?

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

我期望我的代碼對圖像沒有任何改變。任何想法爲什麼這樣做?

回答

3

如果你看看setHsv()的文檔,你會發現如果你沒有明確指定alpha的話,默認情況下alpha被設置爲255(或者爲浮點版本1.0)。

也許使用行c.setHsv(c.hue(), c.saturation(), c.value(), c.alpha());將解決您的問題。