Page 1 of 1
					
				Mapping IM commands , reduce red channell for 'red eye'
				Posted: 2006-11-29T15:03:40-07:00
				by monsters
				Hi there, this works dandy in ImageMagick CLI
convert red-eye.jpg  -region 24x14+72+115  -channel red -modulate 100,70 output.jpg
I can't for the life of me figure out how to duplicate this in MagickWand
Any help appreciated.
			 
			
					
				
				Posted: 2006-11-29T17:07:47-07:00
				by el_supremo
				[edit]Oooops. I meant to reply to your post in the MagickWand forum. Oh well.
I think this does what you wanted 

I'd be interested if anyone has a better/alternate method.
Pete
Code: Select all
	MagickWand *magick_wand = NULL,*region_wand = NULL;
	int dx,dy,x,y;
	MagickWandGenesis();
	magick_wand = NewMagickWand();
	MagickReadImage(magick_wand,"magick.jpg");
	// Specify the region's (x,y) coordinate
	x = 115;
	y = 25;
	// and its width and height
	dx = 40;
	dy = 40;
	// and extract it
	region_wand = MagickGetImageRegion(magick_wand,dx,dy,x,y);
	// Modulate the region
	MagickModulateImage(region_wand,50,70,0);
	// and now copy the red channel back
	MagickCompositeImageChannel(magick_wand,RedChannel,region_wand,CopyCompositeOp,x,y);
	MagickWriteImage(magick_wand,"magick_red_eye.jpg");
	/* Clean up */
	if(magick_wand)magick_wand = DestroyMagickWand(magick_wand);
	if(region_wand)region_wand = DestroyMagickWand(region_wand);
	MagickWandTerminus();
 
			
					
				Hmm
				Posted: 2006-11-30T16:38:45-07:00
				by monsters
				well, that technique is a start, i end up with some very green images.. 
currently trying to figure out 
MagickFxImage , which it would seem nobody has ever used before.. ever. 
 
Doesn't seem to matter what i pass in, it doesn't do anything..
I was tring fx strings, like this
MagickFxImage( $region_wand, "u.r /2",MW_RedChannel );
but quickly realised it did nothing, and neither does this
MagickFxImage( $region_wand, "xxxxxxxxxxxxxxxxxxxxxx",MW_RedChannel );
	  	
MagickWand is really, really cryptic, and almost not documented at all... I'm pretty surprised by all that..
 
			
					
				
				Posted: 2006-11-30T18:25:12-07:00
				by magick
				Did you try 
- fx_wand = MagickFxImageChannel( $region_wand, "u /2", MW_RedChannel );
  MagickFxImageChannel() returns a wand and leaves the original image sequence untouched.
 
			
					
				i did.
				Posted: 2006-11-30T22:09:47-07:00
				by monsters
				It's great to see an admin involved!!
I did, it would seem , to me, that the magickwand api returns a wand, but that the php implementation of it actually returns a magickwand boolean (true | false ) 
I've found this discrepency in other areas as well..
I will double check though.
			 
			
					
				
				Posted: 2006-12-11T10:50:48-07:00
				by monsters
				I ended up solving this by doing a pixel iteration and replacing the red pixels with non red pixels, i can't post the actual formula due to my NDA's and such, but the formula was not a complicated one.
I never could get the fx commands to work.