1

scaledToHeight で QPixmap のサイズを変更して QByteArray に変換すると、この ByteArray のサイズは、スケーリングされていない QPixmap の ByteArray のサイズとまったく同じになります。QPixmap をピクセルサイズとファイルサイズで縮小する可能性はありますか?

よろしくお願いします

4

1 に答える 1

3

これは、あなたがやっていることが確かに可能であることを示す概念実証です。多分あなたはあなたが違うことをしているのを見ることができますか?

#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();
}

2 つの推測:

  • scaledToHeight元の画像のスケーリングされたコピーを返します。ピックスマップ インスタンスを直接スケーリングしません。
  • 同じQByteArray. つまり、QByteArrayの容量は、実際のコンテンツがはるかに小さい場合でも、より大きなままになる可能性があります。
于 2011-11-11T13:50:33.717 に答える