0

base64 でエンコードされたデータがあります。たとえばdata:image/png;base64,R0lGODlhIA...、Magick ++でPNGに変換したい。これは私のコードです:

std::string data = "data:image/png;base64,R0lGODlhIA...";
std::string output;     //this is the output PNG data
Magick::Blob input_blob((void*) data.c_str(), data.length());
Magick::Image input_image;
input_image.magick("INLINE");
input_image.read(input_blob);

Magick::Blob output_blob;
input_image.write(&output_blob, "PNG");
output.assign((char*) output_blob.data(), output_blob.length());

コードは機能しますが、base64 エンコード データが非常に大きい場合、コード行 input_image.read(input_blob);がクラッシュします。

コードが正しいかどうか、またはbase64エンコードデータをmagick ++でPNGに変換する方法を誰か教えてもらえますか?

どんな助けでも大歓迎です!

4

1 に答える 1

2

インライン イメージ形式では、ファイルから参照するために 5000 文字を超えるデータが必要であり、BLOB データとして直接読み取ることはできません。

オプション:

  • base64データを解析してバイナリ blob にデコードし、ImageMagick::Image に渡します。
  • 一時ファイルにデータを書き込み、inline:プレフィックスを使用します

例:

input_image.read("inline:/path/to/base64.txt");
于 2013-08-22T17:32:41.327 に答える