站长原创,版权所有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
测试完毕了,呵呵,所需要的功能又达到了,呵呵……