亚洲欧美第一页_禁久久精品乱码_粉嫩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| 韩国毛片一区二区三区| 亚洲日本丝袜连裤袜办公室| 欧美一区二区免费观在线| 成人永久看片免费视频天堂| 欧美国产精品专区| 欧美精品自拍偷拍| 国产一区二区三区精品视频| 久久色.com| 91啪在线观看| 国产一区二区三区在线观看精品| 久久久精品黄色| 欧美日韩一区二区三区视频 | 97精品国产露脸对白| 香蕉久久夜色精品国产使用方法| 国产成人午夜99999| 亚洲一区av在线| 日韩精品中文字幕在线一区| 国产精品欧美极品| 国产精品电影一区二区| 91精品国产aⅴ一区二区| 国产iv一区二区三区| 蜜臀av一区二区| 中文字幕一区二区三区色视频| 日韩视频一区二区三区在线播放| 99精品视频在线免费观看| 久久99精品国产.久久久久| 婷婷综合久久一区二区三区| 欧美一级理论性理论a| 欧美日韩国产首页在线观看| 欧美在线观看禁18| 在线这里只有精品| 在线免费av一区| 欧美在线视频日韩| 91黄色在线观看| 欧洲精品一区二区| 欧美久久一区二区| 欧美精品99久久久**| 欧美高清dvd| 日韩三级电影网址| 欧美精品一区二区三区蜜臀| 日韩视频国产视频| 欧美岛国在线观看| 久久久亚洲午夜电影| 日本一区免费视频| 一区在线观看免费| 亚洲最新视频在线观看| 亚洲在线中文字幕| 午夜视频一区二区| 美女诱惑一区二区| 国产麻豆精品久久一二三| 风间由美性色一区二区三区| www.在线欧美| 欧美在线观看视频一区二区三区| 欧美日韩国产在线播放网站| 欧美一级艳片视频免费观看| 日韩精品一区二| 国产色婷婷亚洲99精品小说| 中文字幕综合网| 午夜精品一区二区三区免费视频 | 石原莉奈一区二区三区在线观看| 日韩精品电影在线| 国内精品视频666| www.欧美精品一二区| 欧美性色aⅴ视频一区日韩精品| 欧美日韩国产影片| 久久久久久久久蜜桃| 中文字幕一区二区5566日韩| 亚洲国产日韩精品| 国产一区二区美女诱惑| 91丨porny丨首页| 884aa四虎影成人精品一区| 久久精品视频在线看| 亚洲精品视频在线看| 男女视频一区二区| a4yy欧美一区二区三区| 欧美精品久久99| 久久精品视频免费| 亚洲成人精品一区二区| 国产精品1区2区3区| 欧美天堂亚洲电影院在线播放| 日韩天堂在线观看| 亚洲同性gay激情无套| 美女高潮久久久| 91猫先生在线| wwwwww.欧美系列| 亚洲一区在线观看视频| 国产精品一区二区三区网站| 欧美日韩三级视频| 综合自拍亚洲综合图不卡区| 免费一区二区视频| 日本道在线观看一区二区| 久久女同精品一区二区| 亚洲成人在线观看视频| av电影在线观看一区| 久久久久久久精| 午夜伦理一区二区| 成人av在线网| 欧美成人高清电影在线| 亚洲第一福利一区| 99久久99久久精品国产片果冻| 欧美电影免费观看完整版| 一区二区三区四区在线| 成人av集中营| 国产亚洲欧美日韩在线一区| 人人精品人人爱| 欧美性淫爽ww久久久久无| 国产精品麻豆久久久| 国产主播一区二区| 日韩欧美三级在线| 亚洲精品免费一二三区| 福利91精品一区二区三区| 精品国产乱码久久| 天堂av在线一区| 日本韩国欧美三级| 中文字幕日韩一区| 成人教育av在线| 久久精品欧美日韩| 激情综合色丁香一区二区| 777色狠狠一区二区三区| 亚洲永久精品国产| av午夜一区麻豆| 欧美激情一区二区三区四区| 免费三级欧美电影| 日韩一级大片在线| 久久国产精品一区二区| 69堂精品视频| 丝袜亚洲另类丝袜在线| 7777女厕盗摄久久久| 亚洲成人第一页| 欧美日韩中文字幕精品| 尤物av一区二区| 在线观看91视频| 午夜精品一区二区三区免费视频| 欧美日韩一级二级| 天堂精品中文字幕在线| 6080yy午夜一二三区久久| 一区二区三区加勒比av| 欧美亚洲国产一区二区三区| 亚洲国产精品自拍| 欧美久久久影院| 老司机精品视频导航| 久久久久久久免费视频了| 国产91精品精华液一区二区三区| 国产精品三级久久久久三级| 91免费在线视频观看| 一区二区免费在线| 欧美高清激情brazzers| 精品一二三四区| 国产精品久久久久影院| 一本久久精品一区二区| 午夜av一区二区| 日韩午夜在线观看| 国产精品一品视频| 亚洲美女免费视频| 正在播放亚洲一区| 国产精品一区二区免费不卡| 中文字幕一区三区| 欧美日韩免费一区二区三区| 另类小说欧美激情| 亚洲欧洲国产日韩| 欧美伦理电影网| 国产精品77777竹菊影视小说| 国产精品国产自产拍高清av| 欧美午夜精品一区| 精品一区二区三区免费| 国产精品国产三级国产aⅴ原创| 欧美特级限制片免费在线观看| 麻豆成人免费电影| 亚洲桃色在线一区| 欧美一卡二卡在线观看| 成人app软件下载大全免费| 偷窥国产亚洲免费视频| 国产欧美一区二区精品仙草咪| 欧美少妇bbb| 成人午夜激情在线| 三级影片在线观看欧美日韩一区二区| 久久午夜羞羞影院免费观看| 91视频免费看| 国内外精品视频| 亚洲成人手机在线| 中日韩av电影| 日韩精品一区二区三区中文精品| 成人免费av资源| 欧美96一区二区免费视频| 亚洲美女屁股眼交| 久久免费视频一区| 欧美高清你懂得| 色综合一个色综合亚洲| 国产在线精品视频| 三级一区在线视频先锋| 亚洲色图视频网| 国产日产欧美一区二区视频| 欧美一区欧美二区| 91久久国产最好的精华液| 国产成人精品影院| 毛片av中文字幕一区二区|