// Last updated 2011/12/02 14:48 //example/pixel_mod.c // Change the colour of one pixel in the logo: image // using either DrawPoint or a RegionIterator #include <windows.h> #include <wand/magick_wand.h> void test_wand(void) { MagickWand *mw = NULL; // Comment out this define to use the region iterator instead of the Draw #define USE_DRAW #ifndef USE_DRAW PixelIterator *iterator = NULL; PixelWand **pixels = NULL; size_t x; #else DrawingWand *dw = NULL; PixelWand *fill = NULL; #endif MagickWandGenesis(); /* Create a wand */ mw = NewMagickWand(); /* Read the input image */ MagickReadImage(mw,"logo:"); #ifndef USE_DRAW // Get a one-pixel region at coordinate 200,100 iterator = NewPixelRegionIterator(mw,200,100,1,1); pixels=PixelGetNextIteratorRow(iterator,&x); // Modify the pixel PixelSetColor(pixels[0],"red"); // then sync it back into the wand PixelSyncIterator(iterator); #else fill = NewPixelWand(); dw = NewDrawingWand(); // Set the fill to "red" or you can do the same thing with this: // PixelSetColor(fill,"rgb(255,0,0)"); PixelSetColor(fill,"red"); DrawSetFillColor(dw,fill); // Uses the current Fill as the colour of the point at 200,100 DrawPoint(dw,200,100); /* srand(time(0)); for(i=0;i<50;i++) { // plonk some random black pixels in the image j = rand()%DS_WIDTH; k = rand()%DS_HEIGHT; image[k*DS_WIDTH+j] = 0; } */ MagickDrawImage(mw,dw); #endif /* write it */ MagickWriteImage(mw,"logo_pixel.gif"); /* Tidy up */ #ifndef USE_DRAW iterator=DestroyPixelIterator(iterator); #else if(dw)dw = DestroyDrawingWand(dw); if(fill)fill = DestroyPixelWand(fill); #endif if(mw) mw = DestroyMagickWand(mw); MagickWandTerminus(); }