1

Magick++ から、またはMagick++ でImageオブジェクトを構築する必要があります。ImageMagick と GraphicsMagick の両方を試しましたが、まだうまくいきません。char *std::string

最初にBlobオブジェクトを作成し、Image(const Blob &blob_)コンストラクト関数を使用してImage. デモコードは次のとおりです。

//image is of type std::string
size_t len = image.size();
char *buf = new char[len + 1];
strncpy(buf, image.c_str(), len);
Blob blob(buf, len);
Image pic(blob);

しかし、実行するとエラーが発生しました:

terminate called after throwing an instance of 'Magick::ErrorCoder'
  what():  Magick: JPEG datastream contains no image () reported by coders/jpeg.c:344 (JPEGErrorHandler)
Aborted

Blob から文字列を取得することについて何かを見つけました。だから私はメソッドBlobを介してそれを作成し、更新しました。base64しかし、それでもエラーが発生しました。

私が考えることができる唯一の方法は、char バッファを一時ファイルに保存し、Image(const std::string &imageSpec_). ただし、この方法は私のオプションでは本当に不要です。

4

1 に答える 1

2

重要な問題は、データ型の会話です。char *Blob直接変換することはできません。GraphicsMagick のソース コードでいくつかのデモを見つけました。それらは次の方法を提供します。

  1. stringまたはchar *=>unsigned char *
  2. unsigned char *=>const void *
  3. const void *=>Blob

それではImage施工OKです。または、試すことができます

Magick::Blob blob(static_cast<const void *>(image.c_str()), len)
于 2014-10-20T07:05:35.207 に答える