0

私はこの種のベクトルを持っています

typedef struct
{
  int r,g,b;
} __attribute__((__packed__))
rgbs;

vector<rgbs> rgbt;

rgbs rgb;
for(int row=0;row<100; row++)
{
  for(int col=0;col<100; col++)
  {
     rgb.r=col+row;
     rgb.g=col+row;
     rgb.b=col+row;
     rgbt.push_back(rgb);
  }
}

magick++ を使用して、このベクターから新しい画像を作成する効率的な方法は何でしょうか。

4

2 に答える 2

0

ザフィーは正しかった::

この場合、赤、青、または緑のピクセルへの sizeof pixelpacket ポインターが 16 ビットであるため、32 ビット整数は使用できません。

そのため、stdint ライブラリから 16 ビットの符号なし整数を使用する必要があります。

#include<stdint.h>
typedef uint16_t WORD;

構造体 rgbs では、代わりに WORD r,g,b を初期化します。

Blob を初期化する方法は次のとおりです: Blob blob(ピクセル データのアドレス、データのサイズ) したがって、コードは次のようになります。

Blob blob(&rgbt[0],(rgbt.size()*sizeof(rgbt[0]));
Image image;
image.size("100x100");
image.magick("RGB");
image.read(blob);
于 2013-06-03T11:05:50.810 に答える