2011-10-06 22 views
7

私はすでにこの質問をしてきましたが、それはFreeImageに関するものでした。今私はImageMagickで同じことをしようとしています(Magick ++でもっと正確にする)。私が必要とするのは、画面上に画像を印刷する能力を持つ画像のピクセルのRGB値を取得することだけです。私はImageMagickフォーラムでこれを尋ねましたが、そこには誰もいないようです。 :-(誰も、助けてくださいことはできますか?Magick ++でピクセルカラーを取得する

答えて

11

バージョン6 API

画像」オブジェクトを考えると、あなたはそれで動作し、「ピクセル・キャッシュ」を要求する必要があります。ドキュメントがありますherehere

// load an image 
Magick::Image image("test.jpg"); 
int w = image.columns(); 
int h = image.rows(); 

// get a "pixel cache" for the entire image 
Magick::PixelPacket *pixels = image.getPixels(0, 0, w, h); 

// now you can access single pixels like a vector 
int row = 0; 
int column = 0; 
Magick::Color color = pixels[w * row + column]; 

// if you make changes, don't forget to save them to the underlying image 
pixels[0] = Magick::Color(255, 0, 0); 
image.syncPixels(); 

// ...and maybe write the image to file. 
image.write("test_modified.jpg"); 

バージョン7 API

バージョン7ではピクセルへのアクセスが変更されましたが(porting参照)、低レベルのアクセスはまだ存在します:

MagickCore::Quantum *pixels = image.getPixels(0, 0, w, h); 

int row = 0; 
int column = 0; 
unsigned offset = image.channels() * (w * row + column); 
pixels[offset + 0] = 255; // red 
pixels[offset + 1] = 0; // green 
pixels[offset + 2] = 0; // blue 
関連する問題