当我使用 scaledToHeight 调整 QPixmap 的大小然后将其转换为 QByteArray 时,此 ByteArray 的大小正是未缩放 QPixmap 的 ByteArray 的大小。是否有可能缩小像素大小和文件大小的 QPixmap?
最好的祝福
当我使用 scaledToHeight 调整 QPixmap 的大小然后将其转换为 QByteArray 时,此 ByteArray 的大小正是未缩放 QPixmap 的 ByteArray 的大小。是否有可能缩小像素大小和文件大小的 QPixmap?
最好的祝福
这是一个概念验证,表明您正在做的事情肯定是可能的。也许你可以看到你在做什么不同?
#include <QtGui>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QPixmap pixmap("/path/to/image.jpg");
QByteArray bytes1;
QBuffer buffer1(&bytes1);
buffer1.open(QIODevice::WriteOnly);
pixmap.save(&buffer1, "png");
qDebug() << bytes1.size();
pixmap = pixmap.scaledToHeight(100);
QByteArray bytes2;
QBuffer buffer2(&bytes2);
buffer2.open(QIODevice::WriteOnly);
pixmap.save(&buffer2, "png");
qDebug() << bytes2.size();
return app.exec();
}
两种猜测:
scaledToHeight
返回原始图像的缩放副本。它不直接缩放像素图实例。QByteArray
,您可能必须在看到大小差异之前截断它。也就是说,即使实际内容小得多,QByteArray的容量也可能保持较大。