亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? image_file.c

?? LastWave
?? C
字號:
/*..........................................................................*//*                                                                          *//*      L a s t W a v e    P a c k a g e 'image' 2.1                        *//*                                                                          *//*      Copyright (C) 1998-2002 Emmanuel Bacry, Jerome Fraleu.              *//*      emails : fraleu@cmap.polytechnique.fr                               *//*               lastwave@cmap.polytechnique.fr                             *//*                                                                          *//*..........................................................................*//*                                                                          *//*      This program is a free software, you can redistribute it and/or     *//*      modify it under the terms of the GNU General Public License as      *//*      published by the Free Software Foundation; either version 2 of the  *//*      License, or (at your option) any later version                      *//*                                                                          *//*      This program is distributed in the hope that it will be useful,     *//*      but WITHOUT ANY WARRANTY; without even the implied warranty of      *//*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       *//*      GNU General Public License for more details.                        *//*                                                                          *//*      You should have received a copy of the GNU General Public License   *//*      along with this program (in a file named COPYRIGHT);                *//*      if not, write to the Free Software Foundation, Inc.,                *//*      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA             *//*                                                                          *//*..........................................................................*/#include "lastwave.h"#include "images.h"/* * Read an image from a stream  * * nrow,ncol  : The size of the image to read if cannot be guessed * flagChar   : YES if each pixel value is coded on a single char (otherwise it is coded on a LWFLOAT) * flagBinary   : YES if each pixel value is coded using binary coding of a real number  *                 using endian mode specified by binaryCoding and size of float nsize. */void ReadImageStream(IMAGE image ,STREAM s, int nrow, int ncol,char flagChar,char flagBinary, char binaryCoding, int nsize){  FILE *stream;  char flagHeader;  fpos_t beginning;  char name[255],str[1000],*str1,c;  int n;  char *h;  int countRC;  int comment=0;  char header[200],car[200];  LWFLOAT *values;  int i;  LWFLOAT *array;   if (s->mode != StreamRead) Errorf("ReadImageStream() : The stream should be an input stream and not an output stream");   if (s->stream == NULL) Errorf("ReadImageStream() : You cannot read an image to standard input");   stream = s->stream;    /*   * Try to read LastWave header   */  flagHeader = NO;  fgetpos(stream,&beginning);  str1 = "LastWave Header";  while (*str1 != '\0') {    c = fgetc(stream);    if (c != *str1) break;    str1++;  }    /* There is a LastWave header */  if (*str1 == '\0') {    c = fgetc(stream);    c = fgetc(stream);    if (c != '\n') ungetc(c,stream);    flagHeader = YES;    n = 0;	n += fscanf(stream,"nrow %d ",&nrow);	n += fscanf(stream,"ncol %d ",&ncol);	n += fscanf(stream,"name %[^\n\r] ",name);	n += fscanf(stream,"binary %[^\n\r] ",str);			if (n != 4) Errorf("ReadImageStream() : Error in the LastWave header of the file");    if (strcmp(name,"none")) SetNameImage(image,name);    else SetNameImage(image,NULL);    flagBinary = NO;    if (!strcmp(str, "no")) flagBinary = NO;    else {      flagBinary = YES;      if (!strncmp(str, "little",6)) {        binaryCoding= BinaryLittleEndian;        str1 = str+6;      }      else if (!strncmp(str, "big",3)) {        binaryCoding= BinaryBigEndian;        str1 = str+3;      }       else Errorf("ReadImageStream() : Bad field value '%s' of field 'binary'",str);      nsize = sizeof(float);      if (*str1 == ' ') {        str1++;        sscanf(str1,"%d",&nsize);      }      if (nsize != sizeof(float) && nsize != sizeof(double)) Errorf("ReadImageStream() : Can't read binary files using %d bytes to store numbers (that size is neither float or double)",nsize);    }     		fscanf(stream,"%[^\n\r] ",str);  }        /*   * If no LastWave header, try to read a pgm header   * (otherwise nrow and ncol have been given)   */  if (!flagHeader) {       fsetpos(stream,&beginning);    str1 = "P5";    while (*str1 != '\0') {      c = fgetc(stream);      if (c != *str1) break;      str1++;    }        /* There is a PGM header */    if (*str1 == '\0') {        fsetpos(stream,&beginning);      countRC =0;      while (countRC!=3){        h = header;        while(1) {	      *h = fgetc(stream);	      if (*h == '\n' || *h == '\r') break;	      h++;	      if (h-header == 190) break;        }        *(h+1) = '\0';        countRC += (*h=='\n' || *h == '\r');        if (strchr(header,'#')) countRC--;        else {           if (countRC==2) {             nrow=atoi(header);            sprintf(car,"%d",nrow);            for (i=0;i<(strlen(car)+1);i++) header[i]=' ';            ncol=atoi(header);            }        }        }      flagChar = YES;      flagHeader = YES;    }  }    /* If no header, the number of rows/cols must have been given */  if (!flagHeader) {    fsetpos(stream,&beginning);    if (nrow < 0 || ncol < 0) Errorf("ReadImageStream() : number of rows/columns must be specified");  }    /* Resize the image */  SizeImage(image,ncol,nrow);  values = image->pixels;  /* Char read */  if (flagChar) {    for(i = 0; i < ncol*nrow; i++) {      fscanf(stream,"%c",&c);      values[i] = (LWFLOAT) ((((int) c)+256)%256);    }     return;  }  /* ascii read */  if (!flagBinary) {    for(i = 0; i < ncol*nrow; i++) {#ifdef NUMDOUBLE           fscanf(stream,"%lf ",values+i);#elif            fscanf(stream,"%f ",values+i);#endif    }     return;  }    /* Binary LWFLOAT read */  if (sizeof(LWFLOAT) == nsize) array = values;  else array = Malloc(nsize*nrow*ncol);        /* Read the data */  if (fread(array,nsize,nrow*ncol,stream) != nrow*ncol)    Errorf("ReadImageStream() : nrow*ncol seems to be too large for this file");              /* Big/Little conversions */  if ((binaryCoding == BinaryLittleEndian && IsCPUBigEndian) || (binaryCoding != BinaryLittleEndian && IsCPULittleEndian))    BigLittleValues(array,nrow*ncol,nsize);        /* Conversion of the array if necessary */  if (sizeof(LWFLOAT) != nsize) {    for (i=0;i<nrow*ncol;i++) {      if (sizeof(float) == nsize) values[i] = ((float *) array)[i];      else values[i] = ((double *) array)[i];    }    Free(array);  }  }/* The corresponding command */void C_ReadImage(char ** argv){  char  *fname;  IMAGE image;  STREAM s;  char flagChar;  char car;  int nrow,ncol,nsize;  char binaryCoding,flagBinary;  char *mode;    argv =   ParseArgv(argv,tIMAGE,&image,tSTREAM_,NULL,&s,-1);  fname = NULL;  if (s == NULL) {        argv = ParseArgv(argv,tSTR,&fname,-1);    s =  OpenFileStream(fname,"r");    if (s == NULL) Errorf("Cannot open the file '%s'",fname);  }  ClearImage(image);  if (s->mode != StreamRead) Errorf("The stream should be an input stream and not an output stream");   if (s->stream == NULL) Errorf("You cannot read an image to standard input");   flagChar = NO;  nrow = ncol = -1;  flagBinary = NO;  while (car=ParseOption(&argv)) {    switch (car) {    case 'r':      flagBinary = YES;      flagChar = NO;	  argv = ParseArgv(argv,tINT,&nrow,tINT,&ncol,-1);      if (*argv != NULL && '0'<=**argv && **argv<='9') {        argv = ParseArgv(argv,tINT_,0,&nsize,-1);        mode = "";      }      else argv = ParseArgv(argv,tSTR_,"",&mode,tINT_,0,&nsize,-1);      if (!strcmp(mode,"little")) binaryCoding = BinaryLittleEndian;      else if (!strcmp(mode,"big")) binaryCoding = BinaryBigEndian;      else if (!strcmp(mode,"")) binaryCoding = 0;      else Errorf("Bad binary mode '%s'",mode);      if (nsize != 0 && nsize != sizeof(float) && nsize != sizeof(double))          Errorf("Bad number of bytes (%d) for float (must be either %d or %d)",nsize,sizeof(float),sizeof(double));       break;          case 'a':	  flagChar = NO; flagBinary = NO;	  argv = ParseArgv(argv,tINT,&nrow,tINT,&ncol,-1);	  break;    case 'c':	  flagChar = YES; flagBinary = NO;	  argv = ParseArgv(argv,tINT,&nrow,tINT,&ncol,-1);	  break;    default:	  ErrorOption(car);    }  }  NoMoreArgs(argv);    ReadImageStream(image,s,nrow,ncol,flagChar,flagBinary,binaryCoding,nsize);        if (fname) CloseStream(s);	}/* * Write an image to a stream  * * flagPGM : if set write using PGM format * flagLW : if set write using Lastwave format * flagBinary : if set write using binary coding * format : if flagBinary is not set then format to use for ascii printing * sep : if flagBinary is not set then string separator to use for ascii printing * flagChar  : set if each pixel value is coded on a single char (otherwise it is coded on a LWFLOAT) *              In case it is set and if min<max then rescaling will be performed between min and max in  *              order to match 0 and 255. */void WriteImageStream(IMAGE image,STREAM s, char flagPGM, char flagLW, char flagBinary, char *format, char *sep, char flagChar,LWFLOAT min, LWFLOAT max){   FILE * stream;  char *type,*format1;  LWFLOAT *values,val;  int i,j;    if (s->mode != StreamWrite) Errorf("WriteImageStream() : The stream should be an output stream and not an input stream");   if (s->stream == NULL) Errorf("WriteImageStream() : You cannot write a signal to standard output");   stream = s->stream;  /* Test the format */  if (format != NULL) {    if (*format == '\0') type = NULL;    else {      format1 = format;      if (strlen(format1)<2 && format1[0] != '%') Errorf("WriteImageStream() : Bad format '%s'",format);          format1++;      while(*format1 != '\0' && *format1 != '%' && !isalpha(*format1)) format1++;      if (*format1 == '\0' || *format1 == '%') Errorf("WriteImageStream() : Bad format '%s'",format);      /* Case of an int */      if (*format1 == 'd' || *format1 == 'i' || *format1 == 'o' ||          *format1 == 'x' || *format1 == 'X' || *format1 == 'u') type = intType;      /* Case of an double */      else if (*format1 == 'f' || *format1 == 'e' || *format1 == 'E' ||               *format1 == 'g' || *format1 == 'G') type = floatType;      else Errorf("WriteImageStream() : Bad format '%s", format);                 }  }  /* PGM header */  if (flagPGM) {    fprintf(stream,"P5\n%d %d\n",image->nrow,image->ncol);    if (flagChar) fprintf(stream,"255\n");    else fprintf(stream,"255.0\n");  }  /* LW header */  else if (flagLW) {    if (flagChar) Errorf("WriteImageStream() : Cannot using char in LastWave format");	fprintf(stream,"LastWave Header\n");	fprintf(stream,"nrow %d\n",image->nrow);	fprintf(stream,"ncol %d\n",image->ncol);	if (image->name == NULL || image->name[0] == '\0') fprintf(stream,"name none\n");	else fprintf(stream,"name %s\n",image->name);		if (flagBinary == NO) fprintf(stream,"binary no\n");	else {	  if (IsCPULittleEndian) fprintf(stream,"binary little %ld\n",sizeof(LWFLOAT));      else fprintf(stream,"binary big %ld\n",sizeof(LWFLOAT));    }    fprintf(stream,"End of Header\n");  }    /* Case we must store a char image */  if (flagChar) {    values = image->pixels;    for (i = 0; i < image->nrow*image->ncol ; i++) {      if (min < max) val = (values[i]-min)*255./(max-min);      else val = values[i];      val = MAX(0,val);      val = MIN(255,val);      fprintf(stream,"%c",(unsigned char)((int)(values[i])));    }    return;  }  /* Case we must store a binary (float) image */  if (flagBinary) {    values = image->pixels;    fwrite(values,sizeof(LWFLOAT),image->nrow*image->ncol,stream);    return;  }     /* Case we must store an ascii image (with tabs) */  if (type == NULL) {#ifdef NUMDOUBLE	    format = "%.16g";#else    format = "%.8g";#endif	  }  if (!strcmp(sep,"")) sep = "\t";  for (i = 0; i < image->nrow ; i++) {    for (j = 0; j < image->ncol ; j++) {      if (type == NULL || type == floatType) fprintf(stream,format,image->pixels[i*image->ncol+j]);      else fprintf(stream,format,(int) image->pixels[i*image->ncol+j]);         if (j != image->ncol-1) fprintf(stream,"%s",sep);    }    fprintf(stream,"\n");  }  }/* The corresponding command */void C_WriteImage(char**argv){  char *fname;  STREAM s;  IMAGE input;  char flagLW,flagChar,flagPGM,flagBinary;  LWFLOAT min,max,f;  char opt,*sep,*format;    argv= ParseArgv(argv,tIMAGEI,&input,tSTREAM_,NULL,&s,-1);   fname = NULL;  if (s == NULL) {    argv = ParseArgv(argv,tSTR,&fname,-1);      s =  OpenFileStream(fname,"w");    if (s == NULL) Errorf("Cannot open the file '%s'",fname);  }   if (s->mode != StreamWrite) Errorf("The stream should be an output stream and not an input stream");   if (s->stream == NULL) Errorf(" You cannot write a signal to standard output");   flagLW = YES;  flagBinary = YES;  flagPGM = NO;  flagChar = NO;  min = max = 0;  format = "";	sep = "\t";  while (opt=ParseOption(&argv)) {    switch (opt) {    case 'a':      flagBinary = NO;      break;    case 'c':      flagChar = YES;      argv = ParseArgv(argv,tFLOAT_,min,&min,tFLOAT_,max,&max,-1);      break;    case 'h':      flagLW = NO;      flagPGM = NO;      break;    case 'f':      if (flagBinary) Errorf("Cannot use -b flag along with -f flag");      if (*argv != NULL && **argv != '-') argv = ParseArgv(argv,tSTR,&format,-1);       else format = "";      if (*argv != NULL && **argv != '-') argv = ParseArgv(argv,tSTR,&sep,-1);       else sep = "\t";      break;    case 'p':      flagPGM = YES;      flagLW = NO;      flagChar = YES;      MinMaxImage(input,NULL,NULL,&min,NULL,NULL,&max);      break;    default:      ErrorOption(opt);    }   }    NoMoreArgs(argv);   if (min > max) {    f = min; min = max; max = f;  }    WriteImageStream(input,s,flagPGM,flagLW,flagBinary,format,sep,flagChar,min,max);  if (fname) CloseStream(s);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精选午夜久久久乱码6080| 国产欧美一二三区| 国产女人水真多18毛片18精品视频| 亚洲欧洲成人精品av97| 免费视频最近日韩| 91浏览器入口在线观看| 久久嫩草精品久久久精品一| 日韩精品成人一区二区在线| 91在线精品一区二区| 久久夜色精品一区| 日韩va欧美va亚洲va久久| 99视频在线观看一区三区| 久久综合九色综合97_久久久| 亚洲午夜激情网站| 91蝌蚪porny成人天涯| 亚洲国产成人一区二区三区| 久久精品国产在热久久| 欧美卡1卡2卡| 婷婷开心久久网| 欧美唯美清纯偷拍| 一区二区三区资源| 欧美伊人久久久久久久久影院 | 2019国产精品| 日韩高清不卡一区二区| 欧美熟乱第一页| 亚洲一区二区三区四区在线免费观看| 成人手机在线视频| 中文字幕av不卡| 成人激情视频网站| 中文文精品字幕一区二区| 国产高清无密码一区二区三区| 精品久久久久久久久久久久包黑料| 日本免费在线视频不卡一不卡二| 制服.丝袜.亚洲.中文.综合| 日韩精品电影在线观看| 日韩欧美中文一区二区| 国产一区二区精品久久91| 国产欧美精品一区aⅴ影院 | 欧美日韩在线三级| 午夜a成v人精品| 日韩一区二区三区三四区视频在线观看| 一区二区国产视频| 欧美日韩国产高清一区| 蜜桃久久av一区| 国产午夜亚洲精品午夜鲁丝片| 国产黄人亚洲片| 1024国产精品| 51午夜精品国产| 国产乱码精品一区二区三区五月婷| 久久在线观看免费| 成人av电影在线观看| 亚洲美女偷拍久久| 欧美久久久久久蜜桃| 久久er99精品| 成人免费在线视频| 欧美久久久久中文字幕| 国内精品久久久久影院薰衣草 | 日本麻豆一区二区三区视频| 欧美一卡二卡三卡四卡| 国产suv精品一区二区三区| 亚洲欧美日韩一区二区| 欧美狂野另类xxxxoooo| 国产精一区二区三区| 一区二区三区精密机械公司| 日韩一区二区三区视频在线观看| 丰满少妇在线播放bd日韩电影| 亚洲乱码日产精品bd| 精品av综合导航| 96av麻豆蜜桃一区二区| 美女在线视频一区| 中文字幕一区二区三| 欧美色精品在线视频| 国产一区二区三区四区在线观看| 自拍偷拍欧美精品| 久久亚洲综合色一区二区三区| 91麻豆国产在线观看| 日本aⅴ精品一区二区三区| 国产精品免费网站在线观看| 91精品国产91热久久久做人人| 国产精品18久久久久久久网站| 中文字幕一区二区三| 精品久久久久久无| 7777精品伊人久久久大香线蕉的| 国产白丝精品91爽爽久久| 全国精品久久少妇| 亚洲午夜久久久久| 中文字幕久久午夜不卡| 欧美一级二级在线观看| 欧美午夜精品久久久久久孕妇| 国产成a人无v码亚洲福利| 六月丁香综合在线视频| 污片在线观看一区二区| 亚洲国产精品二十页| 日韩欧美成人一区二区| 欧美日韩在线一区二区| 色综合夜色一区| www.日本不卡| www.av亚洲| 成人亚洲一区二区一| 国产中文一区二区三区| 久久99精品国产麻豆婷婷洗澡| 亚洲二区视频在线| 亚洲欧美一区二区不卡| 国产精品国产三级国产专播品爱网| 久久综合网色—综合色88| 日韩女同互慰一区二区| 欧美一级午夜免费电影| 欧美一区二区视频免费观看| 5858s免费视频成人| 69av一区二区三区| 欧美一级搡bbbb搡bbbb| 欧美一级欧美三级在线观看| 91精品福利在线一区二区三区| 欧美视频精品在线| 欧美午夜精品一区二区三区| 欧美日韩一卡二卡| 91精品免费在线| 日韩你懂的在线播放| 精品久久久三级丝袜| 国产婷婷一区二区| 中文字幕在线一区免费| 亚洲欧洲制服丝袜| 午夜视频久久久久久| 石原莉奈在线亚洲二区| 日本欧洲一区二区| 精品午夜久久福利影院| 国产一区二区三区精品视频| 国产福利精品导航| 成人白浆超碰人人人人| 色国产综合视频| 精品视频在线看| 91麻豆精品国产91| 337p粉嫩大胆噜噜噜噜噜91av| 国产日产亚洲精品系列| 国产精品久久久久久久久动漫| 亚洲码国产岛国毛片在线| 亚洲一区欧美一区| 久久精品国产久精国产爱| 国产乱色国产精品免费视频| 色综合天天综合给合国产| 在线不卡欧美精品一区二区三区| 日韩精品一区二区三区视频在线观看 | 91精品国产麻豆国产自产在线 | 亚洲国产毛片aaaaa无费看| 日本欧美久久久久免费播放网| 国产在线播精品第三| 91在线精品秘密一区二区| 7777精品伊人久久久大香线蕉最新版 | 欧美一级淫片007| 国产精品视频看| 天堂蜜桃91精品| 成人看片黄a免费看在线| 欧美日本国产视频| 欧美激情中文字幕| 日韩精品亚洲一区| www.亚洲激情.com| 欧美成人综合网站| 亚洲女同ⅹxx女同tv| 狂野欧美性猛交blacked| a4yy欧美一区二区三区| 欧美女孩性生活视频| 中文无字幕一区二区三区| 日韩电影在线观看电影| 91小视频在线| 久久久精品中文字幕麻豆发布| 亚洲国产乱码最新视频| 成年人国产精品| wwwwww.欧美系列| 香蕉成人伊视频在线观看| 粉嫩aⅴ一区二区三区四区五区 | 日韩国产在线一| 99国产精品久久久久久久久久| 日韩美女视频一区二区在线观看| 亚洲六月丁香色婷婷综合久久 | 国产精品2024| 欧美电影免费观看高清完整版在线| 亚洲另类色综合网站| 国产老肥熟一区二区三区| 91精品欧美综合在线观看最新 | 一区二区三区在线影院| 国产成人精品影院| 精品国产91久久久久久久妲己| 五月天精品一区二区三区| 在线一区二区三区四区| 中文字幕中文在线不卡住| 成人免费精品视频| 欧美国产日韩一二三区| 国产乱子伦视频一区二区三区| 日韩免费性生活视频播放| 天堂va蜜桃一区二区三区漫画版| 欧美亚洲国产一区在线观看网站| 中文字幕一区二区三区在线观看| 丰满亚洲少妇av| 中文字幕+乱码+中文字幕一区| 国产精品一区二区你懂的| 国产欧美一二三区| 北条麻妃国产九九精品视频| 国产精品乱码久久久久久| 丁香啪啪综合成人亚洲小说| 国产精品热久久久久夜色精品三区 |