[英]Can't save PNG image into file
我在保存圖像時遇到了一些麻煩。 我必須通過rect裁剪“ 1.png”並將其保存到文件,但是出現一個空的(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;
}
QImage的save方法不使用文件名作為參數,它負責QFile。 嘗試這個;
pixmap.save(&file, "PNG");
您不需要為此任務使用QDataStream
。 直接使用QImage
save
方法。 您的代碼應如下所示:
QImage pixmap("1.png");
...................
QString fileName("D:/yourFile.png");
QFile file(fileName);
if(file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
pixmap.save(&file, "PNG");
}
else {
qDebug() << "Can't open file: " << fileName;
}
我認為您必須關閉之前打開的文件。 另外,您根本不需要打開文件。 您可以這樣做:
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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.