我在保存图像方面遇到了一些麻烦。我必须裁剪" 1.png"通过rect并将其保存到文件,但是出现一个空的(0字节)。我做错了什么?
void RedactorForm::cropButtonSlot(int x1, int y1, int x2, int y2) {
QImage pixmap("1.png");
QRect rect(x1,y1,x2,y2);
pixmap=pixmap.copy(rect);
QString fileName("D:/yourFile.png");
QFile file(fileName);
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
pixmap.save(fileName,0,100);
out <<pixmap;
}
答案 0 :(得分:0)
QImage的save方法不会将文件名作为参数,而是使用QFile。试试这个;
pixmap.save(&file, "PNG");
答案 1 :(得分:0)
您不需要使用QDataStream
来执行此任务。直接使用save
的{{1}}方法。你的代码应该是这样的:
QImage
答案 2 :(得分:0)
我认为您必须关闭之前打开过的文件。您也根本不需要打开文件。你可以这样做:
QRect rect(x1,y1,x2,y2);
QImage pixmap(x2-x1,y2-y1,QImage::Format_ARGB32);
pixmap.copy(rect);
QFile file("D:/yourFile.png");
pixmap.save(file.fileName(),"PNG");