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

时间:2015-12-30 18:20:56

标签: c++ qt qimage

我想要更改某些颜色的像素并保存更改,但不能正常工作。 我有这个循环。首先,我在屏幕上打印真值:如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不能用于保存功能? 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

JPG中存在问题。不知何故,这种格式会改变值,并尝试使文件更小。我保存在PNG中,我的价值观就像我想要的那样。

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