2011-08-08 2 views
2

아래의 코드가 Qt에서 QImage를 변경하는 이유를 이해하려고합니다. 그것은 (아직) 아무것도 할 의도가 없으며 테스트 용입니다. 알파가있는 이미지에서 코드를 실행하면 알파 채널이 손실되고 검은 색 배경으로 바뀝니다. 여기 이 코드로 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(...) 주석 결과입니다

enter image description here

을 그리고 여기에 image.setPixel(...) 선 결과입니다

enter image description here

내가 기대 내 코드는 이미지를 변경하지 않습니다. 왜 이런 짓을 한거야?

답변

3

setHsv()의 설명서를 보면 명시 적으로 지정하지 않으면 알파가 기본적으로 255 (또는 float 버전의 경우 1.0)로 설정되어 있음을 알 수 있습니다.

아마도 c.setHsv(c.hue(), c.saturation(), c.value(), c.alpha()); 줄을 사용하면 문제가 해결됩니다.

관련 문제