圧縮画像データをメモリ上に書き込む

jpgやpng形式の画像データを、ファイルでなくメモリ上に書き込みたい場合があります。できます。

#include <QBuffer>
#include <QFile>
#include <QImageWriter>

// 画像を読み込む
QImage img;
img.load( "C:\\Users\\Public\\import.png" );

// メモリ上 (buf) にjpg形式で書き込む
QBuffer buf;
QImageWriter iw( &buf, "jpg" ); // "png" なら png形式
iw.write( img );

// 書き込んだデータを、ファイルに書き込み確認する
QFile f( "C:\\Users\\Public\\export.jpg" );
if (f.open( QIODevice::WriteOnly ))
{
  f.write( buf.buffer().constData(), buf.size() );
  f.close();
}

jpgの保存品質は、QImageWriter の setQuality で指定できます。