使用GraphicsMagick提取图片基本信息
通过使用PingImage获取图片基本属性。
PingImage
简介
Image *PingImage( const ImageInfo *image_info, ExceptionInfo *exception );
说明
- 它返回指定图片除像素(Pixels)以外的所有属性。
- 相比ReadImage它更快,且使用更少内存。
- 执行失败时,返回Image为NULL,且通过exception返回详细失败信息。
参数
**image_info **
该参数为由文件或文件名初始化的ImageInfo对象
Sample
参考GraphicsMagick官方文档
提取图片基本信息
Code
image_info.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <magick/api.h>
#include<iostream>
using namespace std;
int main ( int argc, char **argv )
{
Image
*image = (Image *) NULL;
char
infile[MaxTextExtent],
outfile[MaxTextExtent];
int
arg = 1,
exit_status = 0;
ImageInfo
*imageInfo;
ExceptionInfo
exception;
InitializeMagick(NULL);
imageInfo=CloneImageInfo(0);
GetExceptionInfo(&exception);
if (argc != 2)
{
(void) fprintf ( stderr, "Usage: %s infile\n", argv[0] );
(void) fflush(stderr);
exit_status = 1;
goto program_exit;
}
(void) strncpy(infile, argv[arg], MaxTextExtent-1 );
(void) strcpy(imageInfo->filename, infile);
if((image = PingImage(imageInfo,&exception)) == NULL) {
printf("PingImage fail, path = %s",infile);
exit_status = -1;
goto program_exit;
}
cout << "image Type:" << image->magick << endl;
cout << "image width:" << image->columns << endl;
cout << "image height:" << image->rows << endl;
cout << "Image colorspace:" << image->colorspace << endl;
/*switch(image->colorspace){
}*/
program_exit:
if (image != (Image *) NULL)
DestroyImage(image);
if (imageInfo != (ImageInfo *) NULL)
DestroyImageInfo(imageInfo);
DestroyMagick();
return exit_status;
}
编译
g++ image_info.cpp `GraphicsMagick-config --cppflags --ldflags --libs`