站长原创,版权所有ITEEDU,2011-07-22
在进行测试的过程中,由于处于摸索和学习的阶段,所以在实现图片格式转换过程中,曾经历了好几个版本,下边简单地做以讲解。
Conver picture1.jpg picture2.bmp之后,就可将picture1.jpg,转换成picture2.jpg。
#include <MagickWand.h>只是进行了简单的测试,工程名字为imagick,可执行文件为imagick,运行时:
#include <MagickCore.h>
#include "convert.h"
int main(int argc,char **argv)
{ ExceptionInfo *exception; ImageInfo *image_info; MagickBooleanType status; MagickCoreGenesis(*argv,MagickTrue); exception=AcquireExceptionInfo(); image_info=AcquireImageInfo(); status=MagickCommandGenesis(image_info,ConvertImageCommand,argc,argv, (char **) NULL,exception);
image_info=DestroyImageInfo(image_info); exception=DestroyExceptionInfo(exception); MagickCoreTerminus(); return(status); }
./imagick picture1.jpg picture2.bmp
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <magick/MagickCore.h> int main(int argc,char **argv) { ExceptionInfo *exception; Image *image,*images, *thumbnails=NULL; ImageInfo *image_info; /* Initialize the image info structure and read an image. */ char *input = "/home/administrator/test.jpg"; MagickCoreGenesis("test",MagickTrue); exception=AcquireExceptionInfo(); image_info=CloneImageInfo((ImageInfo *) NULL); (void) strcpy(image_info->filename,input); //如果合成了image,那么就可以从这里开始 images=ReadImage(image_info,exception); if (exception->severity != UndefinedException) CatchException(exception); printf("exception\n"); if (images == (Image *) NULL) exit(1); printf("images\n"); /* Convert the image to a thumbnail. */ thumbnails=NewImageList(); while ((image=RemoveFirstImageFromList(&images)) != (Image *) NULL) { //resize_image=ResizeImage(image,1024,800,LanczosFilter,1.0,exception); thumbnails = ThumbnailImage(image,image->columns, image->rows, exception); printf("thumbnails\n"); //if (resize_image == (Image *) NULL) // MagickError(exception->severity,exception->reason,exception->description); // (void) AppendImageToList(&thumbnails,resize_image); DestroyImage(image); } /* Write the image thumbnail. */ thumbnails->depth=1; thumbnails->colors=2; thumbnails->compression=NoCompression; char *output = "/home/administrator/tmp.bmp"; (void) strcpy(thumbnails->filename,output); WriteImage(image_info,thumbnails); /* Destroy the image thumbnail and exit. */ thumbnails=DestroyImageList(thumbnails); image_info=DestroyImageInfo(image_info); exception=DestroyExceptionInfo(exception); MagickCoreTerminus(); printf("picture convert successfully!"); return(0); }该程序运行完毕后,直接将 test.jpg转换成了tmp.bmp图片,成功。
char *imagick(char *input_info) { char *output_info = NULL; ExceptionInfo *exception; Image *image,*images, *thumbnails=NULL; ImageInfo *image_info; /* Initialize the image info structure and read an image. */ MagickCoreGenesis("test",MagickTrue); exception=AcquireExceptionInfo(); image_info=CloneImageInfo((ImageInfo *) NULL); (void) strcpy(image_info->filename,input_info); //如果合成了image,那么就可以从这里开始 images=ReadImage(image_info,exception); if (exception->severity != UndefinedException) CatchException(exception); if (images == (Image *) NULL) exit(1); /* Convert the image to a thumbnail. */ thumbnails=NewImageList(); while ((image=RemoveFirstImageFromList(&images)) != (Image *) NULL) { //resize_image=ResizeImage(image,1024,800,LanczosFilter,1.0,exception); thumbnails = ThumbnailImage(image,image->columns, image->rows, exception); DestroyImage(image); } /* Write the image thumbnail. */ thumbnails->depth=1; thumbnails->colors=2; thumbnails->compression=NoCompression; output_info = "/tmp/image.bmp"; (void) strcpy(thumbnails->filename,output_info); WriteImage(image_info,thumbnails); /* Destroy the image thumbnail and exit. */ thumbnails=DestroyImageList(thumbnails); image_info=DestroyImageInfo(image_info); exception=DestroyExceptionInfo(exception); MagickCoreTerminus(); return output_info; }//return the tmp.bmp's path
测试完毕了,呵呵,所需要的功能又达到了,呵呵……