簡體   English   中英

無法將PNG圖片保存到文件中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM