亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美一区二区视频网站| 久久新电视剧免费观看| 日韩午夜在线观看视频| 国产精品沙发午睡系列990531| 一区二区三区久久| 国产成人自拍高清视频在线免费播放| 欧美性生交片4| 国产午夜亚洲精品不卡| 日本91福利区| 欧美日韩国产中文| 亚洲色欲色欲www| 国产精品一区二区果冻传媒| 91精品在线免费观看| 亚洲视频你懂的| 国产福利91精品一区| 欧美不卡一区二区三区四区| 亚洲一区二区综合| 99精品在线观看视频| 国产香蕉久久精品综合网| 久久av中文字幕片| 91精品国产黑色紧身裤美女| 亚洲主播在线播放| 91一区一区三区| 亚洲欧洲av在线| 99在线精品视频| 亚洲欧美在线观看| 成人激情校园春色| 中文字幕精品在线不卡| 国产成人精品一区二区三区四区 | 日本一区二区动态图| 精品无人码麻豆乱码1区2区| 日韩欧美一区中文| 麻豆91在线播放免费| 日韩一级黄色大片| 麻豆精品视频在线观看视频| 日韩限制级电影在线观看| 欧美aaaaaa午夜精品| 精品国产欧美一区二区| 久久国产精品无码网站| 久久综合网色—综合色88| 国产精品中文字幕一区二区三区| 26uuu国产日韩综合| 国产黄色精品网站| 亚洲三级在线播放| 欧美日韩国产精选| 美国三级日本三级久久99| 久久这里只精品最新地址| 国产精品一二三区| 视频一区视频二区中文| 欧美日本国产视频| 蜜桃av噜噜一区二区三区小说| 日韩精品一区在线观看| 国产成人午夜电影网| 椎名由奈av一区二区三区| 色欧美乱欧美15图片| 日本中文字幕一区二区有限公司| 精品理论电影在线观看| 不卡高清视频专区| 调教+趴+乳夹+国产+精品| 精品免费国产一区二区三区四区| 成人免费毛片嘿嘿连载视频| 亚洲免费观看高清| 日韩精品在线网站| 91视视频在线观看入口直接观看www| 五月婷婷激情综合| 久久久久久久久久久99999| 91麻豆国产福利精品| 久久激情五月激情| 亚洲人成精品久久久久| 欧美一区二区在线看| caoporn国产一区二区| 日韩中文字幕一区二区三区| 中文字幕成人av| 777午夜精品视频在线播放| 成人av在线网站| 日本午夜一本久久久综合| 自拍偷拍国产精品| 国产午夜精品久久| 日韩一级片在线播放| 色乱码一区二区三区88| 捆绑变态av一区二区三区| 亚洲六月丁香色婷婷综合久久| 精品国产三级a在线观看| 欧美日韩在线一区二区| 高清日韩电视剧大全免费| 日韩精品欧美成人高清一区二区| 亚洲欧美一区二区视频| 久久久久久久久免费| 777久久久精品| 91国产精品成人| va亚洲va日韩不卡在线观看| 99视频有精品| 大胆亚洲人体视频| 另类人妖一区二区av| 亚洲国产成人av| 亚洲黄色在线视频| 中文字幕不卡在线观看| 久久久综合九色合综国产精品| 91精品麻豆日日躁夜夜躁| 欧美日韩综合在线| 色av成人天堂桃色av| 99久久免费视频.com| av高清久久久| 99视频精品全部免费在线| 丁香婷婷综合激情五月色| 国产一区 二区| 韩国精品主播一区二区在线观看 | 国产视频一区二区三区在线观看 | 精品一区二区在线播放| 日本不卡的三区四区五区| 亚洲电影视频在线| 亚洲午夜三级在线| 午夜亚洲福利老司机| 亚欧色一区w666天堂| 亚洲二区在线视频| 视频在线在亚洲| 美国十次了思思久久精品导航| 免费欧美高清视频| 韩国成人福利片在线播放| 精品一区免费av| 粗大黑人巨茎大战欧美成人| 成人综合在线视频| 色综合视频在线观看| 欧美性xxxxx极品少妇| 69av一区二区三区| 精品国产成人在线影院 | 国产成人精品网址| 成人a免费在线看| 97国产精品videossex| 欧美优质美女网站| 3atv在线一区二区三区| 精品裸体舞一区二区三区| 国产欧美一区二区三区网站| 中文字幕一区二区三区精华液| 亚洲男人天堂av网| 日本中文字幕一区二区有限公司| 久久精品国产亚洲高清剧情介绍 | 国产精品一区二区三区乱码| 国产成人精品1024| 色综合网色综合| 91精品国产91综合久久蜜臀| 久久免费视频色| 亚洲精品免费一二三区| 日本欧美一区二区三区| 粉嫩一区二区三区在线看| 欧美午夜精品理论片a级按摩| 日韩网站在线看片你懂的| 中文字幕av免费专区久久| 亚洲一区电影777| 国产成人在线视频网站| 欧美日韩精品福利| 欧美国产亚洲另类动漫| 日韩精品一二三区| 99亚偷拍自图区亚洲| 在线综合+亚洲+欧美中文字幕| 国产日韩欧美制服另类| 亚洲第一综合色| 成人av在线电影| 亚洲精品一区二区三区四区高清| 亚洲日本在线天堂| 精品亚洲国产成人av制服丝袜| 91麻豆国产自产在线观看| 日韩精品一区二区三区四区| 亚洲综合在线电影| 国产精品一卡二| 制服丝袜亚洲网站| 亚洲蜜臀av乱码久久精品蜜桃| 国内精品嫩模私拍在线| 欧美日韩免费观看一区三区| 欧美国产日本韩| 黑人巨大精品欧美黑白配亚洲| 91在线视频在线| 欧美极品少妇xxxxⅹ高跟鞋| 免费精品视频在线| 欧美午夜精品免费| 亚洲欧美另类综合偷拍| 国产在线播放一区三区四| 欧美一区二区三区视频在线观看| 亚洲欧洲三级电影| 成人午夜视频免费看| 久久天堂av综合合色蜜桃网| 日韩国产在线观看| 日本道色综合久久| 中文字幕一区日韩精品欧美| 国产成人午夜精品影院观看视频| 日韩欧美国产系列| 青青草国产精品97视觉盛宴| 欧美在线观看视频一区二区| 亚洲情趣在线观看| 91麻豆国产福利在线观看| 国产欧美日韩精品在线| 国产在线精品不卡| 久久久噜噜噜久久中文字幕色伊伊| 日韩av不卡一区二区| 777色狠狠一区二区三区| 亚洲va欧美va人人爽午夜| 欧美午夜在线观看| 一卡二卡欧美日韩| 欧美性色欧美a在线播放| 亚洲国产成人tv|