以MAJOR.MINOR.PATCH-Status格式返回LibRaw版本的字符串表示形式(即0.6.0-Alpha2或0.6.1-Release)。
返回LibRaw版本的整数表示形式。在LibRaw开发期间,版本号总是增加。
用于调用者应用程序中的版本检查的宏。如果当前库版本大于或等于在宏参数中设置,则返回“true”。该宏在运行时(不是在编译时)执行,可用于检查动态加载的LibRaw的版本(来自DLL /共享库)。
返回支持的摄像机数量。
返回支持的摄像头列表。列表的最新项目设置为NULL(便于打印)。
(仅当LibRaw使用RawSpeed支持构建时)。
使用path_to_cameras_xml指定的RawSpeed相机描述数据(cameras.xml)加载XML文件。成功时返回0,出错时返回非零值。
该函数通过传递指针与当前原始解码器数据来填充libraw_decoder_info_t结构。
该函数根据返回代码约定返回一个整数:如果任何系统调用返回错误,则为正数;如果LibRaw中存在错误情况,则返回负数(来自LibRaw错误列表)。
返回文件解包功能的函数名称。仅供LibRaw测试套件设计人员用于测试覆盖率评估。
此调用设置内部快速取消标志。如果设置,当前的Raw解码器将尽快终止。如果您需要在多线程程序中取消所有LibRaw解码器(例如,用于快速程序终止或仅用于取消当前处理),则此调用很有用。
此调用清除内部快速取消标志,因此(早期)终止的LibRaw解码器可能再次工作。
此调用返回行,列中的拜耳模式中的像素颜色(颜色组件编号)。对于4分量拜耳(RGBG2,CMYG等),返回值在0..3范围内,对于3色数据,返回值在0..2范围内。
此调用返回unpack()阶段中发生的非致命数据错误(超出范围等)的计数。
该调用将从RAW数据中减去黑色电平值(对于合适的RAW数据)。colordata.data_maximum和colordata.maximum和黑电平数据(colordata.black和colordata.cblack)也将进行调整。
如果您使用自己的代码对RAW数据进行后处理,则应使用此调用。LibRaw 后处理函数将自己调用subtract_black()。
该函数根据返回代码约定返回一个整数:如果任何系统调用返回错误,则为正数;如果LibRaw中存在错误情况,则返回负数(来自LibRaw错误列表)。
Libraw可以读取浮点DNG文件(没有其他RAW格式可以使用浮点),无论是否转换为整数数据。浮点值存储在imgdata.rawdata缓冲区中:
函数调用浮点支持:
int LibRaw :: is_sraw(); int LibRaw :: is_nikon_sraw(); int LibRaw :: sraw_midpoint()
如果使用Adobe DNG SDK支持编译LibRaw并且您希望使用此支持:
此调用关闭带有关联数据缓冲区的输入数据流并取消阻止打开的文件。
释放LibRaw实例的已分配数据,使用同一处理器处理下一个文件。反复调用recycle()是非常可能的,不要与任何东西发生冲突。
析构函数,包含调用recycle()。
将进度阶段代码转换为描述字符串(英文)。
模拟strerror(3)函数:输出LibRaw错误代码的文本描述(英文)。
在RAW转换过程中,LibRaw可以调用用户设置的回调。此回调可用于:
此外,库的工作可能会导致需要通知调用应用程序的两种类型的异常情况:
应用程序可以设置自己的回调,这些回调将在上述情况下被调用以通知用户(或调用程序)。
typedef int(* progress_callback)(void * callback_data,enum LibRaw_progress stage,int iteration,int expected); void LibRaw :: set_progress_handler(progress_callback func,void * callback_data);
LibRaw用户可以设置自己的回调,在dcraw_process()的RAW后处理期间将调用10-50次。
该回调可以通过返回非零值来终止当前图像处理。在这种情况下,所有处理将立即取消,所有资源将通过recycle()调用返回给系统。当前调用dcraw_process()将返回错误代码LIBRAW_CANCELLED_BY_CALLBACK。
回调参数:
回调应返回值:0表示继续处理,非零表示立即取消处理。
如果使用OpenMP支持编译LibRaw,迭代参数可能不会总是在一个阶段内增加。乱序调用是可能的。
回调代码示例:
int my_progress_callback(void * data,enum LibRaw_progress p,int iteration,int expected) { char * passed_string =(char * data); printf(“回调:%s传递%d%d,数据传递:%s \ n”,libraw_strprogress(p),iteration,expected,passed_string); if(timeout || key_pressed) 返回1; //立即取消处理, 否则 返回0; //可以继续 }
typedef void(* exif_parser_callback)(void * context,int tag,int type,int len,unsigned int ord,void * ifp); void LibRaw :: set_exifparser_handler(exif_parser_callback cb,void * context);
使用参数在每个已解析的EXIF / Makernotes标记上调用回调:
typedef void(* memory_callback)(void * callback_data,const char * file,const char * where); void LibRaw :: set_memerror_handler(memory_callback func,void * callback_data);
在内存不足的情况下,用户可以设置他或她自己的功能。它是一个接收两个字符串参数的void函数:
回调函数用于信息目的:它通知用户或程序代码无法进行处理。
如果用户未设置自己的处理程序,则将使用标准处理程序(stderr中的错误消息输出)。
可以通过将NULL传递给set_memerror_handler来设置null处理程序; 那么就不会调用通知函数。通过在构造函数中创建具有LIBRAW_OPTIONS_NO_MEMERR_CALLBACK标志的LibRaw对象,可以实现相同的效果。
在内存不足的情况下,终止当前文件的处理并调用通知程序; 释放所有已分配的资源,并执行recycle()。当前调用将返回LIBRAW_UNSUFFICIENT_MEMORY。
在尝试继续数据处理时,所有后续调用都将返回LIBRAW_OUT_OF_ORDER_CALL。可以通过调用LibRaw :: open_file()以通常的方式开始处理新文件。
typedef void(* data_callback)(void * callback_data,const char * file,const int offset); void LibRaw :: set_dataerror_handler(data_callback func,void * callback_data);
在输入数据中出现错误的情况下,用户可以定义他或她自己的要调用的函数。它是一个接收两个参数的void函数:
回调函数用于信息目的:它通知用户或程序代码无法进行处理。
如果用户未设置自己的处理程序,则将使用标准处理程序(stderr中的错误消息输出)。
可以通过将NULL传递给set_memerror_handler来设置null处理程序; 那么就不会调用通知函数。通过在构造函数中创建具有LIBRAW_OPTIONS_NO_DATAERR_CALLBACK标志的LibRaw对象,可以实现相同的效果。
在输入数据中出现错误的情况下,终止当前文件的处理并调用通知程序; 释放所有已分配的资源,并执行recycle()。当前调用将返回LIBRAW_IO_ERROR。
在尝试继续数据处理时,所有后续调用都将返回LIBRAW_OUT_OF_ORDER_CALL。可以通过调用LibRaw :: open_file()以通常的方式开始处理新文件。