📄 jas_image.h
字号:
/* Image format-dependent operations. */typedef struct { jas_image_t *(*decode)(jas_stream_t *in, char *opts); /* Decode image data from a stream. */ int (*encode)(jas_image_t *image, jas_stream_t *out, char *opts); /* Encode image data to a stream. */ int (*validate)(jas_stream_t *in); /* Determine if stream data is in a particular format. */} jas_image_fmtops_t;/* Image format information. */typedef struct { int id; /* The ID for this format. */ char *name; /* The name by which this format is identified. */ char *ext; /* The file name extension associated with this format. */ char *desc; /* A brief description of the format. */ jas_image_fmtops_t ops; /* The operations for this format. */} jas_image_fmtinfo_t;/******************************************************************************\* Image operations.\******************************************************************************//* Create an image. */jas_image_t *jas_image_create(int numcmpts, jas_image_cmptparm_t *cmptparms, jas_clrspc_t clrspc);/* Create an "empty" image. */jas_image_t *jas_image_create0(void);/* Clone an image. */jas_image_t *jas_image_copy(jas_image_t *image);/* Deallocate any resources associated with an image. */void jas_image_destroy(jas_image_t *image);/* Get the width of the image in units of the image reference grid. */#define jas_image_width(image) \ ((image)->brx_ - (image)->tlx_)/* Get the height of the image in units of the image reference grid. */#define jas_image_height(image) \ ((image)->bry_ - (image)->tly_)/* Get the x-coordinate of the top-left corner of the image bounding box on the reference grid. */#define jas_image_tlx(image) \ ((image)->tlx_)/* Get the y-coordinate of the top-left corner of the image bounding box on the reference grid. */#define jas_image_tly(image) \ ((image)->tly_)/* Get the x-coordinate of the bottom-right corner of the image bounding box on the reference grid (plus one). */#define jas_image_brx(image) \ ((image)->brx_)/* Get the y-coordinate of the bottom-right corner of the image bounding box on the reference grid (plus one). */#define jas_image_bry(image) \ ((image)->bry_)/* Get the number of image components. */#define jas_image_numcmpts(image) \ ((image)->numcmpts_)/* Get the color model used by the image. */#define jas_image_clrspc(image) \ ((image)->clrspc_)/* Set the color model for an image. */#define jas_image_setclrspc(image, clrspc) \ ((image)->clrspc_ = (clrspc))#define jas_image_cmpttype(image, cmptno) \ ((image)->cmpts_[(cmptno)]->type_)#define jas_image_setcmpttype(image, cmptno, type) \ ((image)->cmpts_[(cmptno)]->type_ = (type))/* Get the width of a component. */#define jas_image_cmptwidth(image, cmptno) \ ((image)->cmpts_[cmptno]->width_)/* Get the height of a component. */#define jas_image_cmptheight(image, cmptno) \ ((image)->cmpts_[cmptno]->height_)/* Get the signedness of the sample data for a component. */#define jas_image_cmptsgnd(image, cmptno) \ ((image)->cmpts_[cmptno]->sgnd_)/* Get the precision of the sample data for a component. */#define jas_image_cmptprec(image, cmptno) \ ((image)->cmpts_[cmptno]->prec_)/* Get the horizontal subsampling factor for a component. */#define jas_image_cmpthstep(image, cmptno) \ ((image)->cmpts_[cmptno]->hstep_)/* Get the vertical subsampling factor for a component. */#define jas_image_cmptvstep(image, cmptno) \ ((image)->cmpts_[cmptno]->vstep_)/* Get the x-coordinate of the top-left corner of a component. */#define jas_image_cmpttlx(image, cmptno) \ ((image)->cmpts_[cmptno]->tlx_)/* Get the y-coordinate of the top-left corner of a component. */#define jas_image_cmpttly(image, cmptno) \ ((image)->cmpts_[cmptno]->tly_)/* Get the x-coordinate of the bottom-right corner of a component (plus "one"). */#define jas_image_cmptbrx(image, cmptno) \ ((image)->cmpts_[cmptno]->tlx_ + (image)->cmpts_[cmptno]->width_ * \ (image)->cmpts_[cmptno]->hstep_)/* Get the y-coordinate of the bottom-right corner of a component (plus "one"). */#define jas_image_cmptbry(image, cmptno) \ ((image)->cmpts_[cmptno]->tly_ + (image)->cmpts_[cmptno]->height_ * \ (image)->cmpts_[cmptno]->vstep_)/* Get the raw size of an image (i.e., the nominal size of the image without any compression. */uint_fast32_t jas_image_rawsize(jas_image_t *image);/* Create an image from a stream in some specified format. */jas_image_t *jas_image_decode(jas_stream_t *in, int fmt, char *optstr);/* Write an image to a stream in a specified format. */int jas_image_encode(jas_image_t *image, jas_stream_t *out, int fmt, char *optstr);/* Read a rectangular region of an image component. *//* The position and size of the rectangular region to be read is specifiedrelative to the component's coordinate system. */int jas_image_readcmpt(jas_image_t *image, int cmptno, jas_image_coord_t x, jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height, jas_matrix_t *data);/* Write a rectangular region of an image component. */int jas_image_writecmpt(jas_image_t *image, int cmptno, jas_image_coord_t x, jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height, jas_matrix_t *data);/* Delete a component from an image. */void jas_image_delcmpt(jas_image_t *image, int cmptno);/* Add a component to an image. */int jas_image_addcmpt(jas_image_t *image, int cmptno, jas_image_cmptparm_t *cmptparm);/* Copy a component from one image to another. */int jas_image_copycmpt(jas_image_t *dstimage, int dstcmptno, jas_image_t *srcimage, int srccmptno);#define JAS_IMAGE_CDT_GETSGND(dtype) (((dtype) >> 7) & 1)#define JAS_IMAGE_CDT_SETSGND(dtype) (((dtype) & 1) << 7)#define JAS_IMAGE_CDT_GETPREC(dtype) ((dtype) & 0x7f)#define JAS_IMAGE_CDT_SETPREC(dtype) ((dtype) & 0x7f)#define jas_image_cmptdtype(image, cmptno) \ (JAS_IMAGE_CDT_SETSGND((image)->cmpts_[cmptno]->sgnd_) | JAS_IMAGE_CDT_SETPREC((image)->cmpts_[cmptno]->prec_))int jas_image_depalettize(jas_image_t *image, int cmptno, int numlutents, int_fast32_t *lutents, int dtype, int newcmptno);int jas_image_readcmptsample(jas_image_t *image, int cmptno, int x, int y);void jas_image_writecmptsample(jas_image_t *image, int cmptno, int x, int y, int_fast32_t v);int jas_image_getcmptbytype(jas_image_t *image, int ctype);/******************************************************************************\* Image format-related operations.\******************************************************************************//* Clear the table of image formats. */void jas_image_clearfmts(void);/* Add entry to table of image formats. */int jas_image_addfmt(int id, char *name, char *ext, char *desc, jas_image_fmtops_t *ops);/* Get the ID for the image format with the specified name. */int jas_image_strtofmt(char *s);/* Get the name of the image format with the specified ID. */char *jas_image_fmttostr(int fmt);/* Lookup image format information by the format ID. */jas_image_fmtinfo_t *jas_image_lookupfmtbyid(int id);/* Lookup image format information by the format name. */jas_image_fmtinfo_t *jas_image_lookupfmtbyname(const char *name);/* Guess the format of an image file based on its name. */int jas_image_fmtfromname(char *filename);/* Get the format of image data in a stream. */int jas_image_getfmt(jas_stream_t *in);#define jas_image_cmprof(image) ((image)->cmprof_)int jas_image_ishomosamp(jas_image_t *image);int jas_image_sampcmpt(jas_image_t *image, int cmptno, int newcmptno, jas_image_coord_t ho, jas_image_coord_t vo, jas_image_coord_t hs, jas_image_coord_t vs, int sgnd, int prec);int jas_image_writecmpt2(jas_image_t *image, int cmptno, jas_image_coord_t x, jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height, long *buf);int jas_image_readcmpt2(jas_image_t *image, int cmptno, jas_image_coord_t x, jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height, long *buf);#define jas_image_setcmprof(image, cmprof) ((image)->cmprof_ = cmprof)jas_image_t *jas_image_chclrspc(jas_image_t *image, jas_cmprof_t *outprof, int intent);void jas_image_dump(jas_image_t *image, FILE *out);/******************************************************************************\* Image format-dependent operations.\******************************************************************************/#if !defined(EXCLUDE_JPG_SUPPORT)/* Format-dependent operations for JPG support. */jas_image_t *jpg_decode(jas_stream_t *in, char *optstr);int jpg_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int jpg_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_MIF_SUPPORT)/* Format-dependent operations for MIF support. */jas_image_t *mif_decode(jas_stream_t *in, char *optstr);int mif_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int mif_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_PNM_SUPPORT)/* Format-dependent operations for PNM support. */jas_image_t *pnm_decode(jas_stream_t *in, char *optstr);int pnm_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int pnm_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_RAS_SUPPORT)/* Format-dependent operations for Sun Rasterfile support. */jas_image_t *ras_decode(jas_stream_t *in, char *optstr);int ras_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int ras_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_BMP_SUPPORT)/* Format-dependent operations for BMP support. */jas_image_t *bmp_decode(jas_stream_t *in, char *optstr);int bmp_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int bmp_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_JP2_SUPPORT)/* Format-dependent operations for JP2 support. */jas_image_t *jp2_decode(jas_stream_t *in, char *optstr);int jp2_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int jp2_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_JPC_SUPPORT)/* Format-dependent operations for JPEG-2000 code stream support. */jas_image_t *jpc_decode(jas_stream_t *in, char *optstr);int jpc_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int jpc_validate(jas_stream_t *in);#endif#if !defined(EXCLUDE_PGX_SUPPORT)/* Format-dependent operations for PGX support. */jas_image_t *pgx_decode(jas_stream_t *in, char *optstr);int pgx_encode(jas_image_t *image, jas_stream_t *out, char *optstr);int pgx_validate(jas_stream_t *in);#endif#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -