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

How to set pixels in Qimage and save changes

我想更改像素的某些颜色并保存更改,但不起作用。 我有这个循环。首先我在屏幕上打印真实值:比如 255,173...,然后在屏幕零上打印第二个 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 不适用于保存功能? 我该如何解决?

您遇到的问题是 save/load,而不是 setPixel。可能您需要在保存时指定格式,例如:

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

以 JPG 格式保存时出现问题。这种格式以某种方式更改值并尝试使文件变小。我保存在 PNG 中,我的价值观保持不变。

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