如何在Qimage中设置像素并保存更改

How to set pixels in Qimage and save changes

本文关键字:像素 保存更改 设置 Qimage      更新时间:2023-10-16

我想更改一些像素的颜色并保存更改,但不起作用。我有这个循环。首先我在屏幕上打印真值:比如255173…,第二个cout在屏幕上显示零。直到这里是好的。

for (int i = 0; i < image->width(); i++) {
            for (int j = 0; j < image->height(); j++) {
                QRgb pixelData = image->pixel(i,j);
                int red = qRed(pixelData);
                cout<<red<<endl;
                image->setPixel(i, j, qRgb(0, 0, 0));
                pixelData = image->pixel(i,j);
                int red2 = qRed(pixelData);
                 cout<<red2<<endl;
            }
        }

在这个循环之后,我保存了图像。当我重新打开或阅读此图像时。我得到了默认值。

if (image->save(out.c_str())) {
            std::cout << "save successful!" <<out<<std::endl;
}

路径是好的。所以我认为setPixel不适用于保存功能?我该怎么解决?

您在保存/加载方面有问题,而不是在setPixel方面。您可能需要在保存时指定一种格式,例如:

image.save("somefile.jpg", "JPG");

问题是保存在JPG中。不知何故,这种格式会更改值,并尝试将文件缩小。我在巴布亚新几内亚储蓄,我的价值观保持原样。

image.save("somefile.png", "PNG");