【LibRaw】原始图像解码库介绍(十二)——C API

C API

LibRaw C API是C ++ API的包装器; 因此,几乎所有C API函数的文档都由一组指向C ++ API描述中相应位置的超链接表示

内容

  1. 初始化:libraw_data_t * libraw_init(unsigned int flags);
  2. 返回值
  3. 数据加载
  4. 参数getters / setters
  5. 辅助功能
  6. 数据后处理,dcraw行为的仿真
  7. 写入输出文件
  8. 将处理结果写入内存缓冲区

初始化:libraw_data_t * libraw_init(unsigned int flags);

该函数返回指向libraw_data_t结构实例的指针
结果指针应作为第一个参数传递给所有C API函数(libraw_strerror除外)。

在出现错误时返回NULL,在所有其他情况下指向结构的指针。

返回值

如果将空指针作为第一个参数传递给它们,则C API的函数返回EINVAL(请参阅errno.h)。在所有其他情况下,返回C ++ API返回码

从文件加载数据

int libraw_open_file(libraw_data_t *,const char *)
int libraw_open_file_ex(libraw_data_t *,const char *,INT64 bigfile_size)
WIN32:int libraw_open_wfile(libraw_data_t *,const wchar_t *)
WIN32:int libraw_open_wfile_ex(libraw_data_t *,const wchar_t *,INT64 bigfile_size)
请参阅 LibRaw :: open_file()
int libraw_open_buffer(libraw_data_t *,void * buffer,size_t bufsize)
LibRaw :: open_buffer()
int libraw_unpack(libraw_data_t *);
请参阅 LibRaw :: unpack()
int libraw_unpack_thumb(libraw_data_t *);
请参阅 LibRaw :: unpack_thumb()

参数setter / getters

这些函数提供了imgdata.params,.sizes和.color字段的接口,无论在构建调用app和库本身时使用的LibRaw版本如何,它都可以工作。

  • int libraw_get_raw_height(libraw_data_t * lr);
  • int libraw_get_raw_width(libraw_data_t * lr);
  • int libraw_get_iheight(libraw_data_t * lr);
  • int libraw_get_iwidth(libraw_data_t * lr);
  • float libraw_get_cam_mul(libraw_data_t * lr,int index);
  • float libraw_get_pre_mul(libraw_data_t * lr,int index);
  • float libraw_get_rgb_cam(libraw_data_t * lr,int index1,int index2);
  • int libraw_get_color_maximum(libraw_data_t * lr);
  • void libraw_set_user_mul(libraw_data_t * lr,int index,float val);
  • void libraw_set_demosaic(libraw_data_t * lr,int value);
  • void libraw_set_output_color(libraw_data_t * lr,int value);
  • void libraw_set_user_mul(libraw_data_t * lr,int index,float val);
  • void libraw_set_output_bps(libraw_data_t * lr,int value);
  • void libraw_set_gamma(libraw_data_t * lr,int index,float value);
  • void libraw_set_no_auto_bright(libraw_data_t * lr,int value);
  • void libraw_set_bright(libraw_data_t * lr,float value);
  • void libraw_set_highlight(libraw_data_t * lr,int value);
  • void libraw_set_fbdd_noiserd(libraw_data_t * lr,int value);
  • void libraw_set_ca_correction(libraw_data_t * lr,int ca_correc,float ca_red,float ca_blue);
  • void libraw_set_ca_correction(libraw_data_t * lr,int ca_correc,float ca_red,float ca_blue);
  • void libraw_set_cfalinenoise(libraw_data_t * lr,int cfaline,float linenoise);
  • void libraw_set_wf_debanding(libraw_data_t * lr,int wf_debanding,float wfd0,float wfd1,float wfd2,float wfd3);
  • void libraw_set_interpolation_passes(libraw_data_t * lr,int pass);

辅助功能

const char * libraw_version()
参见 LibRaw :: version()
const char * libraw_versionNumber()
请参阅 LibRaw :: versionNumber()q
bool LIBRAW_CHECK_VERSION(主要,次要,补丁)
请参阅 LIBRAW_CHECK_VERSION
unsigned libraw_capabilities()
请参阅 LibRaw :: capabilities()
int libraw_cameraCount()
LibRaw :: cameraCount()
int libraw_cameraList()
请参阅 LibRaw :: cameraList()
void libraw_get_decoder_info(libraw_data_t *,libraw_decoder_info_t *);
请参阅 LibRaw :: get_decoder_info()
void libraw_unpack_function_name(libraw_data_t *);
请参阅 LibRaw :: unpack_function_name()
void libraw_COLOR(libraw_data_t *,int row,int col);
LibRaw :: COLOR()
void libraw_subtract_black(libraw_data_t *);
请参阅 LibRaw :: subtract_black()
void libraw_recycle_datastream(libraw_data_t *);
请参阅 LibRaw :: recycle_datastream()
void libraw_recycle(libraw_data_t *);
LibRaw :: recycle()
void libraw_close(libraw_data_t *);
LibRaw :: ~LibRaw()
const char * libraw_strerror(int errorcode);
请参阅 LibRaw :: strerror
const char * libraw_strprogress(enum LibRaw_progress);
请参阅 LibRaw :: strprogress
void libraw_set_memerror_handler(libraw_data_t *,memory_callback cb);
请参阅 LibRaw :: set_memerror_handler()
void libraw_set_dataerror_handler(libraw_data_t *,data_callback func);
请参阅 LibRaw :: set_dataerror_handler()
void libraw_set_progress_handler(libraw_data_t *,progress_callback func);
请参阅 LibRaw :: set_progress_handler()

数据后处理,dcraw行为的仿真

参数设定

通过设置libraw_output_params_t结构中的字段,设置下面描述的调用的后处理参数,就像C ++ API一样:

 libraw_data_t * ptr = libraw_init(0);
 ptr-> params.output_tiff = 1; //输出到TIFF
    

libraw_output_params_t文档中描述了此结构的字段有关其用法的说明,请参阅API说明

模拟dcraw行为

int libraw_raw2image(libraw_data_t *);
请参阅 LibRaw :: raw2image
int libraw_free_image(libraw_data_t *);
LibRaw :: free_image
int libraw_adjust_sizes_info_only(libraw_data_t *);
请参阅 LibRaw :: adjust_sizes_info_only()
int libraw_dcraw_process(libraw_data_t * lr);
请参阅 LibRaw :: dcraw_process()

写入输出文件

int libraw_dcraw_ppm_tiff_writer(libraw_data_t * lr,const char * filename);
请参阅 LibRaw :: dcraw_ppm_tiff_writer()
int libraw_dcraw_thumb_writer(libraw_data_t * lr,const char * fname);
LibRaw :: dcraw_thumb_writer()

将处理结果写入内存缓冲区

libraw_processed_image_t * libraw_dcraw_make_mem_image(libraw_data_t * lr,int * errcode)
请参阅 LibRaw :: dcraw_make_mem_image()
libraw_processed_image_t * libraw_dcraw_make_mem_thumb(libraw_data_t * lr,int * errcode)
LibRaw :: dcraw_make_mem_thumb()

猜你喜欢

转载自blog.csdn.net/Mr_sandman1994/article/details/80897497
今日推荐