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

📄 enc_jpeg2000.c

📁 计算线性趋势 回归系数 主要用于气象站点值的线性趋势计算
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#ifdef USE_JPEG2000#include "jasper/jasper.h"#define JAS_1_700_2#endif /* USE_JPEG2000 */#ifdef __64BIT__  typedef int g2int;#else  typedef long g2int;#endif#if defined _UNDERSCORE   #define enc_jpeg2000 enc_jpeg2000_#elif defined _DOUBLEUNDERSCORE   #define enc_jpeg2000 enc_jpeg2000__#endifint enc_jpeg2000(unsigned char *cin,g2int *pwidth,g2int *pheight,g2int *pnbits,                 g2int *ltype, g2int *ratio, g2int *retry, char *outjpc,                  g2int *jpclen)/*$$$  SUBPROGRAM DOCUMENTATION BLOCK*                .      .    .                                       .* SUBPROGRAM:    enc_jpeg2000      Encodes JPEG2000 code stream*   PRGMMR: Gilbert          ORG: W/NP11     DATE: 2002-12-02** ABSTRACT: This Function encodes a grayscale image into a JPEG2000 code stream*   specified in the JPEG2000 Part-1 standard (i.e., ISO/IEC 15444-1) *   using JasPer Software version 1.500.4 (or 1.700.2 ) written by the *   University of British Columbia, Image Power Inc, and others.*   JasPer is available at http://www.ece.uvic.ca/~mdadams/jasper/.** PROGRAM HISTORY LOG:* 2002-12-02  Gilbert* 2004-07-20  GIlbert - Added retry argument/option to allow option of*                       increasing the maximum number of guard bits to the*                       JPEG2000 algorithm.** USAGE:    int enc_jpeg2000(unsigned char *cin,g2int *pwidth,g2int *pheight,*                            g2int *pnbits, g2int *ltype, g2int *ratio, *                            g2int *retry, char *outjpc, g2int *jpclen)**   INPUT ARGUMENTS:*      cin   - Packed matrix of Grayscale image values to encode.*    pwidth  - Pointer to width of image*    pheight - Pointer to height of image*    pnbits  - Pointer to depth (in bits) of image.  i.e number of bits*              used to hold each data value*    ltype   - Pointer to indicator of lossless or lossy compression*              = 1, for lossy compression*              != 1, for lossless compression*    ratio   - Pointer to target compression ratio.  (ratio:1)*              Used only when *ltype == 1.*    retry   - Pointer to option type.*              1 = try increasing number of guard bits*              otherwise, no additional options*    jpclen  - Number of bytes allocated for new JPEG2000 code stream in*              outjpc.**   INPUT ARGUMENTS:*     outjpc - Output encoded JPEG2000 code stream**   RETURN VALUES :*        > 0 = Length in bytes of encoded JPEG2000 code stream*         -3 = Error decode jpeg2000 code stream.*         -5 = decoded image had multiple color components.*              Only grayscale is expected.** REMARKS:**      Requires JasPer Software version 1.500.4 or 1.700.2** ATTRIBUTES:*   LANGUAGE: C*   MACHINE:  IBM SP**$$$*/{    int rwcnt = 0;#ifdef USE_JPEG2000    int ier ;    jas_image_t image;    jas_stream_t *jpcstream,*istream;    jas_image_cmpt_t cmpt,*pcmpt;#define MAXOPTSSIZE 1024    char opts[MAXOPTSSIZE];    g2int width,height,nbits;    width=*pwidth;    height=*pheight;    nbits=*pnbits;/*    printf(" enc_jpeg2000:width %ld\n",width);    printf(" enc_jpeg2000:height %ld\n",height);    printf(" enc_jpeg2000:nbits %ld\n",nbits);    printf(" enc_jpeg2000:jpclen %ld\n",*jpclen);*//*    jas_init(); *//* *    Set lossy compression options, if requested. */    if ( *ltype != 1 ) {       opts[0]=(char)0;    }    else {       snprintf(opts,MAXOPTSSIZE,"mode=real\nrate=%f",1.0/(float)*ratio);    }    if ( *retry == 1 ) {             /* option to increase number of guard bits */       strcat(opts,"\nnumgbits=4");    }    /* printf("SAGopts: %s\n",opts); */    /* *     Initialize the JasPer image structure describing the grayscale *     image to encode into the JPEG2000 code stream. */    image.tlx_=0;    image.tly_=0;#ifdef JAS_1_500_4     image.brx_=(uint_fast32_t)width;    image.bry_=(uint_fast32_t)height;#endif #ifdef JAS_1_700_2    image.brx_=(jas_image_coord_t)width;    image.bry_=(jas_image_coord_t)height;#endif    image.numcmpts_=1;    image.maxcmpts_=1;#ifdef JAS_1_500_4    image.colormodel_=JAS_IMAGE_CM_GRAY;         /* grayscale Image */#endif#ifdef JAS_1_700_2    image.clrspc_=JAS_CLRSPC_SGRAY;         /* grayscale Image */    image.cmprof_=0; #endif    image.inmem_=1;    cmpt.tlx_=0;    cmpt.tly_=0;    cmpt.hstep_=1;    cmpt.vstep_=1;#ifdef JAS_1_500_4    cmpt.width_=(uint_fast32_t)width;    cmpt.height_=(uint_fast32_t)height;#endif#ifdef JAS_1_700_2    cmpt.width_=(jas_image_coord_t)width;    cmpt.height_=(jas_image_coord_t)height;    cmpt.type_=JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_GRAY_Y);#endif    cmpt.prec_=nbits;    cmpt.sgnd_=0;    cmpt.cps_=(nbits+7)/8;    pcmpt=&cmpt;    image.cmpts_=&pcmpt;/* *    Open a JasPer stream containing the input grayscale values */    istream=jas_stream_memopen((char *)cin,height*width*cmpt.cps_);    cmpt.stream_=istream;/* *    Open an output stream that will contain the encoded jpeg2000 *    code stream. */    jpcstream=jas_stream_memopen(outjpc,(int)(*jpclen));/* *     Encode image. */    ier=jpc_encode(&image,jpcstream,opts);    if ( ier != 0 ) {       printf(" jpc_encode return = %d \n",ier);       return -3;    }/* *     Clean up JasPer work structures. */        rwcnt=jpcstream->rwcnt_;    ier=jas_stream_close(istream);    ier=jas_stream_close(jpcstream);/* *      Return size of jpeg2000 code stream */#endif /* USE_JPEG2000 */    return (rwcnt);}

⌨️ 快捷键说明

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