上述代码有不足之处,经过改进测试后: #include <stdio.h> #include <stdlib.h> #include <wand/MagickWand.h> #define ThrowWandException(wand) / { / char / *description;/ / ExceptionType / severity;/ / description=MagickGetException(wand,&severity);/ (void)fprintf(stderr,"%s %s %lu %s/n",GetMagickModule(),description);/ description=(char*)MagickRelinquishMemory(description);/ exit(-1);/ } int main(int argc,char **argv) { MagickBooleanType status; MagickWand *magick_wand; MagickWandGenesis(); magick_wand=NewMagickWand(); //double fuzz=10; //PixelWand *target; status=MagickReadImage(magick_wand,*(argv+1)); //MagickFlattenImages(magick_wand); //MagickSetImageOpacity(magick_wand,1.0); if(status==MagickFalse) ThrowWandException(magick_wand); DrawingWand *dwand=NewDrawingWand(); double myarray[]={.739,0,0,.739,63,-79}; //MagickSetImageAlphaChannel(magick_wand,SetAlphaChannel); status=MagickSetImageMatte(magick_wand,MagickTrue); if(status==MagickFalse) ThrowWandException(magick_wand); VirtualPixelMethod vpm=MagickSetImageVirtualPixelMethod(magick_wand,TransparentVirtualPixelMethod); printf("%d/n",vpm); //if(vpm==0) // ThrowWandException(magick_wand); MagickDistortImage(magick_wand,AffineProjectionDistortion,6,myarray,MagickFalse); //MagickBooleanType status_trans=MagickAffineTransformImage(magick_wand,dwand); //target=NewPixelWand(); //PixelSetColor(target,"whilte"); //MagickTransparentPaintImage(magick_wand,target,0,fuzz,MagickFalse); status=MagickWriteImage(magick_wand,*(argv+2)); magick_wand=DestroyMagickWand(magick_wand); dwand=DestroyDrawingWand(dwand); MagickWandTerminus(); return 0; }