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

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

?? imagefile.cpp

?? 這是VC++ 2003.net圖像處理的光盤源程序!!!非常好的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ImageFile.cpp
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
    
//--------------------------------------------------------------
//  BMP

BOOL CImage::LoadBMP(LPCSTR lpstrFileName)
{
	BITMAPFILEHEADER BFH;
    BITMAPINFOHEADER BIH;
	RGBQUAD  ColorTab[256];
    FILE	*fp;
        
	fp=fopen(lpstrFileName,"rb");
	if (fp==NULL)
		return(FALSE);

    fread(&BFH,sizeof(BITMAPFILEHEADER),1,fp);
    fread(&BIH,sizeof(BITMAPINFOHEADER),1,fp);

	if ((BFH.bfType!='MB')||(BIH.biCompression !=0)) {
		fclose(fp);   
 		return(FALSE);
	}
 
	Create(BIH.biWidth,BIH.biHeight,BIH.biBitCount,0);

    if (nNumColors>0) {
 		fread(ColorTab,4,nNumColors,fp);
		SetColorTable(0,nNumColors,ColorTab);
	}

	fseek(fp,BFH.bfOffBits,SEEK_SET);
    fread(lpBits,nSize,1,fp);
	fclose(fp);   
   	return(TRUE);
}

BOOL CImage::SaveBMP(LPCSTR lpstrFileName)
{
	BITMAPFILEHEADER BFH={'MB',0,0,0,0};
    BITMAPINFOHEADER Bmih={40,1,1,1,8,0,0,0,0,0,0};
	RGBQUAD	ColorTab[256];
	DWORD	dwBmiSize;
 	FILE	*fp;
      
    dwBmiSize=40+4*nNumColors;

	fp=fopen(lpstrFileName,"w+b");
	if (fp==NULL)
		return(FALSE);

	BFH.bfSize   =sizeof(BITMAPFILEHEADER)+dwBmiSize+nSize;
	BFH.bfOffBits=sizeof(BITMAPFILEHEADER)+
		sizeof(BITMAPINFOHEADER)+nNumColors*sizeof(RGBQUAD);

	Bmih.biWidth = nWidth;
	Bmih.biHeight = nHeight;
	Bmih.biBitCount = nBitCount;

    fwrite(&BFH,1,sizeof(BITMAPFILEHEADER),fp);
    fwrite((BYTE*)&Bmih,1,40,fp);
	if (nBitCount<=8) {
		GetColorTable(0,nNumColors,ColorTab);
		fwrite(ColorTab,4,nNumColors,fp);
	}
    fwrite(lpBits,1,nSize,fp);
	fclose(fp);
   	return(TRUE);
}
//  BMP

//--------------------------------------------------------------
//  TIF

BOOL CImage::LoadTIF(LPCSTR lpstrFileName)
{
	DWORD	ColorMap;
	FILE	*fp;
	struct	TIF_IFH head;
	struct	TIF_DE dir[25];
 	WORD	tif_pal[768];
	WORD	k,m,n,t,nn,c1,c2,Dx,Dy,Bits;
 	WORD	TifBytesPerLine,OffBits,ImageType,Compression;
    BYTE 	VgaPal[768],BmpPal[1024],*buf,*p;
 	int		i,j,flag=0;
 
	fp=fopen(lpstrFileName,"rb"); 
	if (fp==NULL)
		return(FALSE);

    fread(&head,1,8,fp); 
    fseek(fp,head.FirstIFD,SEEK_SET);
    fread(&nn,2,1,fp);
    fread(dir,12,nn,fp);
 
    for (i=0;i<nn;i++) { 
		switch(dir[i].Tag) {
			case IMAGEWIDTH :
				Dx=(WORD) dir[i].ValOff;
				break;
			case IMAGELENGTH :
				Dy=(WORD) dir[i].ValOff;
				break;
			case BITSPERSAMPLE :
				if (dir[i].Length>2)  Bits=24;
				else Bits=(WORD) dir[i].ValOff;
				break;
			case COMPRESSION :
				Compression=(WORD) dir[i].ValOff;  
				break;
			case PHOTOMETRICINTERP :
				ImageType=(WORD) dir[i].ValOff;    
				break;
			case STRIPOFFSETS :
				if (dir[i].Length==1)
					OffBits=(WORD) dir[i].ValOff;
				else {
					fseek(fp,dir[i].ValOff,SEEK_SET);
					fread(&OffBits,4,1,fp);
				}
				break;
			case COLORMAP :
				ColorMap=dir[i].ValOff;
				n=(WORD) dir[i].Length;
				fseek(fp,ColorMap,SEEK_SET);
				fread(tif_pal,2,n,fp);
  				p=(BYTE *) VgaPal;    
				n/=3;
				for (m=0;m<n;m++) {  	
					for (j=0,k=0;j<3;j++,k+=n)
						p[3*m+j] = (tif_pal[m+k] >> 8) & 0xff;
				}
				break;
			default :  
				break;
		}
		if (ImageType<2) {		  
			p=(BYTE *) VgaPal;
			if (Bits==1) {
				if (ImageType==0)  {  c1=0;    c2=255;  }
				else               {  c1=255;  c2=0;    }
				for (j=0;j<3;j++)   p[j]  =(BYTE) c2;
				for (j=0;j<3;j++)   p[3+j]=(BYTE) c1;
			}
			else {
				for (t=0;t<256;t++) {
					k=t;
					if (ImageType==0)   k=255-k;
					for (j=0;j<3;j++)   p[3*t+j]=(BYTE) k;
				}
			}
		}
	}

	if (Compression!=1) {
		fclose(fp);
		return(FALSE);
	}

	nWidth   =Dx;
	nHeight  =Dy;
	nBitCount=Bits;

	Create(nWidth,nHeight,nBitCount,0);

    if (nBitCount==1)       TifBytesPerLine=(nWidth+7)/8;
    else if (nBitCount==4)  TifBytesPerLine=(nWidth+1)/2;
    else if (nBitCount==8)  TifBytesPerLine=nWidth;
    else if (nBitCount==24) TifBytesPerLine=3*nWidth;
  
	for (i=0;i<nNumColors;i++) {
		for (j=0;j<3;j++) { 
			BmpPal[4*i+j]=VgaPal[3*i+2-j]; 
		}
		SetColorTable(0,nNumColors,(RGBQUAD*)BmpPal);
	}
 
	buf=lpBits+(nHeight-1)*nBytesPerLine;
 	fseek(fp,OffBits,SEEK_SET);
 	for (i=0;i<nHeight;i++) {
		fread(buf,1,TifBytesPerLine,fp);
 		if (nBitCount==24) {
 			for (j=0,k=0;j<nWidth;j++,k+=3) {
				m=buf[k+2];
 				buf[k+2]=buf[k];
				buf[k]=(BYTE) m;		     
			}
		}
 		buf-=nBytesPerLine;
	}
  
    fclose(fp);
   	return(TRUE);
}

BOOL CImage::SaveTIF(LPCSTR lpstrFileName)
{
	struct TIF_IFH head;
	struct TIF_DE dir[]={
	       0x100,4,1,0,    0x101,4,1,0,
	       0x102,3,1,0,    0x103,3,1,1,
	       0x106,3,1,0,    0x111,4,1,0,
	       0x115,3,1,0,    0x140,3,0x300,0
	};
	RGBQUAD ColorTab[256];
	long	long2,ll;
	WORD	tif_pal[768];
	int		i,j,k,m,n,t,flag=0;
	int		OffBits,ImageType,TifBytesPerLine;
    BYTE 	*buf,*buf1,*p;
   	FILE	*fp;
 	
	fp=fopen(lpstrFileName,"w+b");
	if (fp==NULL)
		return(FALSE);

	if (nBitCount<=8) 
		GetColorTable(0,nNumColors,ColorTab);
 
 	switch(nBitCount){
	case 1:
   		if (ColorTab[0].rgbBlue==255) 
			ImageType=0;
		else
			ImageType=1;
		TifBytesPerLine=(nWidth+7)/8;
 		break;
	case 4:;
		ImageType=3;	
		TifBytesPerLine=(nWidth+1)/2;
		break;
	case 8:
		ImageType=3;;
		TifBytesPerLine=nWidth;
		break;
	case 24:
		ImageType=2;;
		TifBytesPerLine=3*nWidth;
		break;
	}

    memset(head.ByteOrder,'I',2);
    head.Version  = 0x2a;     
	head.FirstIFD = 8;
    dir[0].ValOff = nWidth;    
	dir[1].ValOff = nHeight;
  	dir[4].ValOff = ImageType;
    if (nBitCount==24) 	dir[6].ValOff = 3;
	else  dir[6].ValOff = 1;
	
    n=7;
    if (dir[4].ValOff==3) n++;

    long2=10+12*n+4;
    if (nBitCount==24) {
		dir[2].Length = 3;      
		dir[2].ValOff = long2;
		long2+=6;
    }
    else dir[2].ValOff = nBitCount;

    OffBits=long2;
    if (dir[4].ValOff==3) {
		if (nBitCount==8)
			OffBits+=768*2;
		else if (nBitCount==4) {
			OffBits+=48*2;
			dir[7].Length=0x30;
		}
		dir[7].ValOff=long2;
    }

    dir[5].ValOff=OffBits;    
	ll=0;
    fwrite(&head,8,1,fp);
    fwrite(&n,2,1,fp);	
    fwrite(dir,12,n,fp);
    fwrite(&ll,4,1,fp);	
    if (nBitCount==24) {		
		for (j=0,m=8;j<3;j++)
			fwrite(&m,2,1,fp);
    }
    if (dir[4].ValOff==3) {
 		p=(BYTE *) ColorTab;
 		if (nBitCount==4) k=16;
		else k=256;
		for (i=0;i<3;i++) {
			for (j=0;j<k;j++) {
				n=((int) p[4*j+2-i]) & 0xff;    
				m=n | (n<<8);
				tif_pal[k*i+j]=m;
			}
		}
		if (nBitCount==8)
			fwrite(tif_pal,2,768,fp);
		else if (nBitCount==4)  
			fwrite(tif_pal,2,48,fp);
    }

	buf1=lpBits+(nHeight-1)*nBytesPerLine;
	buf =(BYTE*) malloc(4*(nWidth+1));	
 	fseek(fp,OffBits,SEEK_SET);		
	for (i=0;i<nHeight;i++) {
		memcpy(buf,buf1,nBytesPerLine);
 		if (nBitCount==24) {			    
			for (j=0,k=0;j<nWidth;j++,k+=3) {
				t=buf[k];
 				buf[k]=buf[k+2];    
				buf[k+2]=(BYTE) t;	
			}
		}
 		fwrite(buf,1,TifBytesPerLine,fp);
 		buf1-=nBytesPerLine;
	}
	fclose(fp);					      
	free(buf);

   	return(TRUE);
}
//  TIF

//--------------------------------------------------------------
//  GIF

int   index,rement;
char  rem;
char  *CTfirst,*CTlast,strbuf[256];
int   *CTnext,*CTlink,CLEAR,EOI,len,max,next;

int  LoadCode(int len,FILE *fp)
{
  int value,mask,start,used;

  start=value=0;
  while(len > 0) {
    if (rement == 0) {
      while(index == 0) index=getc(fp);
      index--;
      rem=(unsigned char) getc(fp);
      rement=8;
    }
    if (len > rement)  used = rement;
    else               used = len;
    rement -= used;
    mask = (0xff>>(8-used));
    mask &= rem;       rem  >>= used;
    mask <<= start;    start += used;
    value |= mask;     len   -= used;
  }
  return(value);
}

void InitStringTable(int size,int flag)
{
  int i;

  len=size+1;        max=1<<len;
  CLEAR=1<<size;     EOI=CLEAR+1;
  next=CLEAR+2;
  for (i=0;i<CLEAR;i++) {
    CTfirst[i]=i;    CTlast[i]=i;
    if (flag==1)     CTlink[i]=-1;
    else {
      CTlink[i]=-2;  CTnext[i]=-1;
    }
  }
  for (i=CLEAR;i<4096;i++) {
    CTlink[i]=-2;
    if (flag==2) CTnext[i]=-1;
  }
}

void AddStringToTable(int S,int K)
{
  CTlast[next] =CTfirst[K];
  CTlink[next] =S;
  CTfirst[next]=CTfirst[S];
  if (++next == max) {
    if (len < 12) {
      len++;	         max<<=1;
    }
  }
}

int  StringFromCode(int i,int K,BYTE *buff)
{
  while(K != -1) {
    buff[i++]=CTlast[K];   K=CTlink[K];
  }
  return(i);
}

int  WriteString(int xx,int i,BYTE *buff,BYTE *buffer)
{
  for (i--;i>=0;i--)  buffer[xx++]=buff[i];
  return(xx);
}

void unpack_LZWline(FILE *fp,int width,BYTE *buffer,int flag)
{
  static int  size,K,S,xx;
  int  i;
  BYTE buff[1024];

  if (flag > 0) {
    CTfirst=(char*) malloc(4096);
	CTlast =(char*) malloc(4096);
	CTnext =(int *) malloc(4096*sizeof(int));
	CTlink =(int *) malloc(4096*sizeof(int));
    rement=0;        rem=0; 
    index=0;
    S=-1;            xx=0;
    fread(&size,1,1,fp);
    InitStringTable(size,1);
  }
  else if (flag==0) {                                                  
    if (xx >= width) {
      if (xx>width)
	for (i=0;i<xx-width;i++) buffer[i]=buffer[i+width];
      xx-=width;
    }
    while((K=LoadCode(len,fp)) != EOI) { 
      if (K == CLEAR) {                  
	    InitStringTable(size,1);         
	    S=-1;                            
      }
      else {
	    if (S != -1) {                   
	      if (CTlink[K] == -2)           
	        AddStringToTable(S,S);       
	      else  AddStringToTable(S,K);
		}
	    i =StringFromCode(0,K,buff);     
	    xx=WriteString(xx,i,buff,buffer); 
	    S=K;                              
	    if (xx >= width)  break;          
      }
    }
  }
  else {
    free(CTfirst);
	free(CTlast);
	free(CTnext);
	free(CTlink);
  }
}

void WriteCode(int code,int len,FILE *fp)    
{                                      
  int  aln,used,cl;

  cl=len;                     aln=rement+len;
  while(aln >= 8) {
    if (rement > 0) {
      used=8-rement;
      strbuf[index++]=rem|(code<<rement);
      code=code >> used;
      cl -= used;             rement=0;
    }
    else {
      strbuf[index++]=code;
      cl -= 8;                code=code >> 8;
    }
    aln-=8;
    if (index == 256) {
      strbuf[0]=(char) 0xff;
      fwrite(strbuf,index,1,fp);
      index=1;
    }
  }
  if (rement == 0) {
    rem=code;                 rement=cl;
  }
  else {
    rem|=(code << rement);    rement+=cl;
  }
}

int IsInTable(int S,BYTE K)            
{
  int  code;

  if (S==-1)  code=K;                  
  else if (CTlink[S]==-2) {            
    CTlink[S]=next;      CTlast[next++]=K;      
    code=-1;
  }
  else {                                        
    code=CTlink[S];
    while((CTnext[code]!=-1) && (CTlast[code]!=K))  
      code=CTnext[code];
    if (CTlast[code] != K) {              
      CTnext[code]=next;    CTlast[next++]=K; 
      code=-1;
    }
  }
  return(code);
}

void pack_LZWline(FILE *fp,int width,BYTE *buffer,int flag)
{						       
  static int  size,S;
  BYTE   K,*ptr;
  int    j,SK;

  if (flag > 0) {              

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人av中文| 欧美国产在线观看| 亚洲18色成人| 欧美性大战久久久久久久| 亚洲一区二区三区精品在线| 欧美人动与zoxxxx乱| 日本特黄久久久高潮| 日韩午夜小视频| 国产精品一区二区果冻传媒| 国产精品网站在线| 色国产综合视频| 日本午夜精品一区二区三区电影 | a级高清视频欧美日韩| 亚洲欧美日韩在线不卡| 欧美日免费三级在线| 国产综合色在线| 亚洲欧洲精品一区二区精品久久久 | 白白色 亚洲乱淫| 亚洲资源在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品进线69影院| 在线观看视频91| 极品销魂美女一区二区三区| 日本一区二区三区dvd视频在线| 99re热这里只有精品视频| 图片区日韩欧美亚洲| 国产欧美精品区一区二区三区| 日本高清无吗v一区| 久久成人羞羞网站| 亚洲人精品午夜| 欧美草草影院在线视频| 99精品国产一区二区三区不卡| 秋霞电影一区二区| 亚洲欧洲一区二区三区| 日韩一级片在线观看| 99精品视频中文字幕| 蜜桃一区二区三区在线| 亚洲欧美激情小说另类| 精品国产sm最大网站免费看| 91丨九色丨蝌蚪富婆spa| 国内精品久久久久影院薰衣草| 亚洲人成伊人成综合网小说| 欧美α欧美αv大片| 欧美色国产精品| 成人黄色片在线观看| 麻豆国产欧美一区二区三区| 亚洲一区二区三区三| 18欧美乱大交hd1984| 久久久亚洲国产美女国产盗摄| 欧美精品一级二级| 99精品视频在线免费观看| 国产乱码精品一品二品| 天堂成人免费av电影一区| 亚洲欧美另类小说| 日本一区二区三区国色天香| 久久综合九色综合97婷婷| 在线不卡一区二区| 91精品办公室少妇高潮对白| av影院午夜一区| 国产成人精品免费一区二区| 久久精品国产免费| 蜜臀久久99精品久久久久宅男| 亚洲综合久久久久| 亚洲欧美偷拍三级| 日韩美女视频一区二区| 国产精品网站一区| 欧美国产一区在线| 中文字幕第一区| 国产日产欧产精品推荐色| 久久亚洲影视婷婷| 久久这里只有精品6| www日韩大片| 欧美xxxxxxxx| 久久亚洲二区三区| 久久久亚洲欧洲日产国码αv| 精品国产不卡一区二区三区| 26uuuu精品一区二区| 久久色中文字幕| 国产欧美精品国产国产专区| 久久欧美中文字幕| 久久久久久久久久久久久久久99 | 精品久久久久久久久久久久久久久久久 | 依依成人精品视频| 亚洲尤物在线视频观看| 亚洲午夜电影在线观看| 亚洲精品视频在线观看免费| 亚洲免费av高清| 亚洲成年人网站在线观看| 天堂av在线一区| 久久99九九99精品| 国产福利一区二区三区视频 | 久久综合五月天婷婷伊人| 2024国产精品| 欧美激情艳妇裸体舞| 亚洲欧美一区二区在线观看| 亚洲欧美区自拍先锋| 午夜精品福利一区二区蜜股av| 性久久久久久久| 久久爱www久久做| 国产91在线|亚洲| 91香蕉视频mp4| 欧美精品vⅰdeose4hd| 亚洲精品一区二区三区福利| 国产精品天天看| 亚洲综合色婷婷| 久久国产精品免费| 国产成人精品影院| 欧美色视频在线观看| 精品国产免费一区二区三区四区| 欧美国产精品一区| 亚洲高清视频在线| 国产老肥熟一区二区三区| 成人激情小说网站| 欧美丰满高潮xxxx喷水动漫| 国产无一区二区| 亚洲妇熟xx妇色黄| 国产乱子伦视频一区二区三区| 99精品视频免费在线观看| 欧美一区二区网站| 国产精品麻豆99久久久久久| 亚洲与欧洲av电影| 粉嫩绯色av一区二区在线观看| 欧美日韩日日夜夜| 国产精品青草久久| 免费一级片91| 在线观看欧美精品| 26uuu久久天堂性欧美| 亚洲成人av一区二区| 成人黄色免费短视频| 精品美女在线观看| 亚洲一区二区在线免费看| 国产美女精品人人做人人爽| 欧美日韩午夜影院| 中文字幕一区二区视频| 蜜臀av亚洲一区中文字幕| 91成人国产精品| 国产精品久久久久婷婷| 激情久久五月天| 欧美二区乱c少妇| 亚洲精品日韩专区silk| 懂色av中文字幕一区二区三区| 欧美电影影音先锋| 亚洲综合成人网| 成人免费视频app| 精品成人佐山爱一区二区| 日韩av高清在线观看| 欧美日韩一级视频| 中文字幕中文字幕在线一区| 久久精品二区亚洲w码| 欧美日韩一区视频| 亚洲女人的天堂| 91香蕉国产在线观看软件| 国产欧美一区在线| 国产精品69毛片高清亚洲| 日韩免费高清av| 日韩电影在线免费观看| 欧美三级中文字幕| 亚洲一区在线视频观看| 色婷婷亚洲综合| 亚洲欧美成aⅴ人在线观看| 99久久精品国产观看| 中文字幕一区二区三区四区不卡 | 成人手机电影网| 久久免费看少妇高潮| 精品在线一区二区三区| 日韩欧美二区三区| 七七婷婷婷婷精品国产| 91精品国产综合久久久蜜臀粉嫩 | 韩国中文字幕2020精品| 日韩午夜激情免费电影| 日韩av一区二区三区| 日韩精品一区二| 日本欧美一区二区在线观看| 欧美高清精品3d| 免费在线成人网| 精品黑人一区二区三区久久| 九一久久久久久| 久久精品亚洲精品国产欧美| 国产麻豆91精品| 国产精品乱码人人做人人爱| 91在线小视频| 亚洲精品免费看| 欧美精选在线播放| 激情综合色综合久久| 久久精品欧美一区二区三区麻豆| 国产麻豆欧美日韩一区| 国产欧美一区二区三区沐欲 | 首页亚洲欧美制服丝腿| 日韩欧美视频在线| 国产不卡一区视频| 国产精品国产三级国产aⅴ原创| 91黄视频在线| 首页国产欧美日韩丝袜| 久久毛片高清国产| 色综合色综合色综合| 三级成人在线视频| 久久久久久一级片| 色婷婷久久一区二区三区麻豆| 日韩av一区二区三区| 国产欧美视频一区二区三区|