我想要更改某些颜色的像素并保存更改,但不能正常工作。 我有这个循环。首先,我在屏幕上打印真值:如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不能用于保存功能? 我该如何解决这个问题?
答案 0 :(得分:2)
您在保存/加载方面遇到问题,而不是使用setPixel。您可能需要在保存时指定格式,例如:
image.save("somefile.jpg", "JPG");
答案 1 :(得分:0)
JPG中存在问题。不知何故,这种格式会改变值,并尝试使文件更小。我保存在PNG中,我的价值观就像我想要的那样。
image.save("somefile.png", "PNG");