質問

XMLファイルにテキストとして画像を保存できるようになりたいと思っていますが、それを行うための効率的な方法を見つけることができません。

これまでに私は試しました:

QByteArray ImageAsByteArray;
QBuffer ImageBuffer(&ImageAsByteArray);
ImageBuffer.open(QIODevice::WriteOnly);
rImage.save(&ImageBuffer, "PNG"); 

return QString(ImageAsByteArray.toBase64());

それが機能しているという事実にもかかわらず、結果は巨大なファイルになりました!私はそこにいくつかのqcompressを追加しようとしましたが、あまり成功せずに...実際にqcompressは何も圧縮していないようです...

私は間違った方法でやっていると思いますが、誰かが私の道を悟ることはできますか?

役に立ちましたか?

解決

画像ファイルをQimageにロードしてから、そのQimageからバイトを取得していますか?はいの場合、あなたは生の画像をエンコードするbase64です。その場合、元の画像ファイルがどれだけ圧縮されているかはまったく問題ではありません。

元の画像ファイル(PNGまたはJPG)をバイナリストリームとして読み取り、Base64をそのストリームエンコードとして読み取る必要があります。例:

QFile* file = new QFile("Image001.jpg");
file->open(QIODevice::ReadOnly);
QByteArray image = file->readAll();
int originalSize = image.length();

QString encoded = QString(image.toBase64());
int encodedSize = encoded.size();

私のテスト画像 originalSize 1028558バイトです encodedSize IS 1371412バイトで、これはオリジナルサイズよりも33%多いです(質問に対するジェロームのコメントを参照)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top