【问题标题】:How to set pixels in Qimage and save changes如何在 Qimage 中设置像素并保存更改
【发布时间】:2015-12-30 18:20:56
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qimage


    【解决方案1】:

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

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

    【讨论】:

    • 我没有索引格式,所以我需要在文件中保存像素的解决方案。在这里,我的索引超出范围。
    • 您有保存/加载问题,而不是 setPixel。因此,您需要阅读有关保存/加载图像和格式的信息
    • 我发现了一个问题。我回答了。
    【解决方案2】:

    问题是保存为 JPG。不知何故,这种格式会改变值并尝试使文件更小。我保存在 PNG 中,我的价值观保持不变。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-08
      • 2013-05-30
      • 2021-04-10
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多