为什么这段代码会使 QImage 失去其 Alpha 通道?

发布于 2024-11-28 15:28:47 字数 712 浏览 1 评论 0原文

我试图理解为什么下面的代码会改变 Qt 中的 QImage。它还不打算做任何事情,它只是为了测试。当我在带有 Alpha 的图像上运行代码时,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这里的描述

这是 image.setPixel(...) 行的结果:

在此处输入图像描述

我希望我的代码不会执行任何操作在图像上进行更改。知道为什么要这样做吗?

I'm trying to understand why the code below changes the QImage in Qt. It's not meant to do anything (yet), it's just for testing. When I run the code on an image with alpha, the alpha channel is lost and replaced by a black background.

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());
    }
}

Here is the result when I comment out the line image.setPixel(...):

enter image description here

And here is the result with the image.setPixel(...) line:

enter image description here

I would expect my code to do no change on the image. Any idea why it's doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静待花开 2024-12-05 15:28:47

如果您查看 setHsv() 的文档,您会看到如果您没有明确指定,alpha 默认设置为 255(对于浮点版本为 1.0)。

也许使用 c.setHsv(c.hue(), c.saturation(), c.value(), c.alpha()); 行可以解决您的问题。

If you look at the documentation of setHsv(), you will see that alpha is set by default to 255 (or 1.0 for the float version) if you don't explicitly specify it.

Perhaps using the line c.setHsv(c.hue(), c.saturation(), c.value(), c.alpha()); will resolve your problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文