⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 export.c

📁 显示了如何从细化后的指纹图像中获得细节点集合。代码由C写成。详细情况见解包后的说明
💻 C
字号:
/*############################################################################# * 文件名:export.c * 功能:  指纹图像输出保存 * modified by  PRTsinghua@hotmail.com#############################################################################*/#include "import.h"#include <stdio.h>#include <magick/api.h>/******************************************************************************  * 功能:将一个指纹图像输出到一个文件,文件的格式由文件的扩展名决定  * 参数:filename  将要保存图像的文件名  *       image     将要导出的图像  * 返回:错误代码******************************************************************************/FvsError_t FvsImageExport(const FvsImage_t image, const FvsString_t filename){	ExceptionInfo	exception;	Image*			magicimage;	ImageInfo*		magicinfo;	FvsError_t ret = FvsOK;	FvsByte_t*		buffer;	FvsInt_t		pitch;	FvsInt_t		height;	FvsInt_t		width;	FvsInt_t		i;	/* 从输入图像中获取 buffer, size 和 pitch */	buffer	= ImageGetBuffer(image);	pitch	= ImageGetPitch(image);	height	= ImageGetHeight(image);	width	= ImageGetWidth(image);	/* 初始化ImageMagick环境 */	InitializeMagick(".");	GetExceptionInfo(&exception);	/* 创建一个空的imageinfo */	magicinfo = CloneImageInfo((ImageInfo*)NULL);	magicinfo->depth = 8;	/* 创建图像 */	magicimage = ConstituteImage(width, height, "I", CharPixel, 									buffer, &exception);	if (exception.severity!=UndefinedException)		CatchException(&exception);	if (magicimage!=(Image*)NULL)	{		/* 拷贝数据 */		for (i=0; i<height; i++)		{			ImportImagePixels(magicimage, 0, i, width, 1, "I", CharPixel,			buffer+i*pitch);		}				/* 保存图像到文件 */		(void)strcpy(magicimage->filename, filename);		magicimage->colorspace = GRAYColorspace;		magicimage->depth      = 8;		WriteImage(magicinfo, magicimage);		DestroyImage(magicimage);	}	else		ret = FvsFailure;	/* 清理 */	DestroyImageInfo(magicinfo);	DestroyExceptionInfo(&exception);	DestroyMagick();	return ret;}#if 0/* The WAND interface is pretty buggy... use the old API *//******************************************************************************  * 功能:将一个指纹图像输出到一个文件,文件的格式由文件的扩展名决定  * 参数:filename  将要保存图像的文件名  *       image     将要导出的图像  * 返回:错误代码******************************************************************************/FvsError_t FvsImageExport(const FvsImage_t image, const FvsString_t filename){	MagickWand*		wand;	FvsByte_t*		buffer;	FvsByte_t*    	out;	FvsInt_t		pitch;	FvsInt_t		height;	FvsInt_t		width;	FvsError_t		ret = FvsOK;	FvsInt_t		i;	/* 初始化Magick */	wand = NewMagickWand();	if (wand!=NULL)	{		/* 提取参数 */		buffer = ImageGetBuffer(image);		width  = ImageGetWidth(image);		height = ImageGetHeight(image);		pitch  = ImageGetPitch(image);			/* 为像素申请新的内存 */		out = (FvsByte_t*)malloc(width*height);		if (out!=NULL)		{			for (i=0; i<height; i++)			memcpy(out+i*width, buffer+i*pitch, width);			/* 输出的图像数据现在在连续的缓冲区中 */			MagickSetSize(wand, width, height);			MagickSetImagePixels(wand, 0, 0, width, height, "I", CharPixel, out);	    			/* 写数据 */    			MagickWriteImage(wand, filename);	    			free(out);		}		else			ret = FvsMemory;		/* 清理 */			DestroyMagickWand(wand);    	}	else		ret = FvsMemory;    	return ret;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -