2011-10-06 31 views
7

Bu soruyu zaten sordum, ancak FreeImage ile ilgili. Şimdi ImageMagick ile aynı şeyi yapmaya çalışıyorum (daha doğru olması için, Magick ++ ile). Tek ihtiyacım olan şey, ekranda baskı yapabilme özelliğine sahip görüntüde RGB'nin piksel değerini elde etmektir. Bunu ImageMagick forumunda sordum, ama orada kimse yok gibi görünüyor. Herkes "Image" nesne, daha sonra onunla çalışmak, bir "piksel önbellek" istemek zorunda. Belgeler olanMagick ++ ile piksel rengini alma

cevap

11

Sürüm bir Verilen 6 API

?, :-(lütfen yardımcı olabilir here ve here:

// 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"); 

Sürüm 7 API

Fakat düşük seviyeli erişim hala mevcutsa: piksele

Access sürüm 7 değişti (porting bakınız):

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 
İlgili konular