如何在 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");
我想更改像素的某些颜色并保存更改,但不起作用。 我有这个循环。首先我在屏幕上打印真实值:比如 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");