最近一直在关注Magick++的使用,在官方论坛里看到了一些比较实际的问题。特记录于此。
转自 http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=16625
是一些参考性的代码,有助于深入理解Magick++
int _tmain(int argc, _TCHAR* argv[]) {
Geometry g(800, 533);
Image theI;
FILE* fh;
float *floatPixelMap;
try {
theI.read(g, "./bluejay.jpg");
int height = theI.rows();
int width = theI.columns();
int size = height * width * 4;
PixelPacket* myMap = theI.getPixels(0, 0, width, height);
floatPixelMap = new float[size];
for (int counter = 0, k=0; counter < size; counter++, ++k) {
floatPixelMap[counter++] = (float)myMap[k].red / 255.0f;
floatPixelMap[counter++] = (float)myMap[k].green / 255.0f;
floatPixelMap[counter++] = (float)myMap[k].blue / 255.0f;
floatPixelMap[counter] = (float)myMap[k].opacity / 255.0f;
}//end for loop
fh = fopen("./bluejay32float.procd.rgba", "wb");
fwrite((void *)floatPixelMap, sizeof(float), size, fh);
}//end try block
catch(Exception& ex) {
cout << "imagicktstr,error," << ex.what() << endl;
}//end catch block
return 0;
}//end main