亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产亚洲一区字幕| 污片在线观看一区二区| 亚洲一线二线三线视频| 久久se精品一区精品二区| eeuss影院一区二区三区| 欧美一级视频精品观看| 久久精品一区二区| 久久99久久久久| 欧美午夜寂寞影院| 亚洲男女一区二区三区| 久久国产精品免费| 欧美三级三级三级爽爽爽| 国产精品嫩草影院com| 久久99精品国产| 日韩一区二区三区av| 日韩精品三区四区| 欧美日韩国产三级| 亚洲国产成人av网| 欧美伊人精品成人久久综合97| 老色鬼精品视频在线观看播放| 成人免费毛片aaaaa**| 欧美成人a视频| 亚洲欧美福利一区二区| 成人一级黄色片| 国产欧美日韩不卡免费| 国产一区二区主播在线| 欧美成人性福生活免费看| 免费在线观看不卡| 日韩精品在线一区| 精品一区二区精品| 久久综合狠狠综合| 国产精品原创巨作av| 欧美不卡在线视频| 精品一区二区三区免费毛片爱| 精品国产乱码久久久久久久| 九九精品一区二区| 久久精品一区八戒影视| 成人av电影在线观看| 亚洲欧美在线观看| 欧美自拍偷拍午夜视频| 欧美成人vps| 另类综合日韩欧美亚洲| 欧美成va人片在线观看| 国产一区在线不卡| 国产欧美va欧美不卡在线| 波多野结衣的一区二区三区| 亚洲精品国产成人久久av盗摄 | 精品黑人一区二区三区久久| 国产老妇另类xxxxx| 欧美国产激情二区三区| 色综合久久综合| 日本美女一区二区三区| 国产亚洲精品aa午夜观看| 成人av在线影院| 亚洲国产欧美另类丝袜| 久久综合色之久久综合| 色综合欧美在线视频区| 美腿丝袜亚洲三区| 国产精品美女久久久久aⅴ国产馆| 色嗨嗨av一区二区三区| 久久精品国产第一区二区三区| 久久精品亚洲一区二区三区浴池 | xnxx国产精品| aaa国产一区| 日韩高清电影一区| 国产精品久久久久久久久晋中 | 91在线观看美女| 亚洲成人资源在线| 欧美极品少妇xxxxⅹ高跟鞋 | 91久久香蕉国产日韩欧美9色| 水野朝阳av一区二区三区| 欧美国产日韩亚洲一区| 欧美性videosxxxxx| 国产成人在线视频免费播放| 亚洲综合免费观看高清完整版| 精品成人在线观看| 在线观看一区二区视频| 成人少妇影院yyyy| 日本系列欧美系列| 亚洲激情校园春色| 国产欧美一区二区精品忘忧草 | 美美哒免费高清在线观看视频一区二区 | 亚洲日本在线a| 久久久久久久久99精品| 欧美日韩国产不卡| 91麻豆123| 岛国精品在线播放| 精品一区二区在线看| 日日夜夜免费精品视频| 日韩美女啊v在线免费观看| 日韩欧美国产综合一区| 欧美日韩视频在线观看一区二区三区| 成人激情免费视频| 国产一区激情在线| 另类小说欧美激情| 日本成人在线看| 亚洲成av人**亚洲成av**| 亚洲免费视频中文字幕| 国产精品传媒入口麻豆| 国产精品欧美久久久久无广告| 日韩三区在线观看| 91精品国产综合久久蜜臀| 欧美性欧美巨大黑白大战| 色婷婷香蕉在线一区二区| 91在线观看高清| 福利电影一区二区| aaa欧美色吧激情视频| 国产麻豆精品在线| 国内精品不卡在线| 黄色精品一二区| 国产综合色在线视频区| 国产在线日韩欧美| 国产成人鲁色资源国产91色综 | 精品噜噜噜噜久久久久久久久试看| 欧美亚洲综合另类| 91精品欧美福利在线观看| 欧美日韩成人一区| 日韩一级高清毛片| 26uuu另类欧美亚洲曰本| 久久女同性恋中文字幕| 久久久久高清精品| 亚洲国产精品二十页| 中文字幕日韩欧美一区二区三区| 中文字幕色av一区二区三区| 一区二区三区在线视频免费| 亚洲精品国产视频| 日本不卡在线视频| 国内成+人亚洲+欧美+综合在线| 国产一区二区三区电影在线观看 | 国产乱码精品一区二区三区av| 黑人巨大精品欧美一区| 国产很黄免费观看久久| 99re这里只有精品6| 日本丶国产丶欧美色综合| 91精品国产综合久久福利| 精品久久免费看| 中文字幕中文乱码欧美一区二区| 亚洲午夜日本在线观看| 免费av网站大全久久| 丁香一区二区三区| 欧美怡红院视频| 久久久久久久久久久久久女国产乱 | 久久久国产精品不卡| 欧美国产1区2区| 亚洲一区二区在线视频| 久久er精品视频| 91久久精品一区二区三区| 欧美一区二区三区视频在线观看| 久久九九久精品国产免费直播| 在线观看视频一区二区欧美日韩| 91成人免费网站| 精品盗摄一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 爽好多水快深点欧美视频| 成人开心网精品视频| 欧美一区二区三区四区久久| 国产精品理论在线观看| 美女视频一区在线观看| 91一区一区三区| 久久久精品tv| 亚洲国产va精品久久久不卡综合| 国产精品996| 欧美高清视频不卡网| 国产精品蜜臀av| 精品一区二区三区蜜桃| 欧美老女人第四色| 亚洲精品中文字幕乱码三区 | 久久久高清一区二区三区| 亚洲电影视频在线| 成人97人人超碰人人99| 久久女同互慰一区二区三区| 日本不卡1234视频| 欧美在线高清视频| 亚洲图片你懂的| 国产精品18久久久久久久久久久久 | 激情深爱一区二区| 日本乱人伦一区| 日本一区二区三区国色天香| 首页亚洲欧美制服丝腿| 欧美亚洲另类激情小说| 亚洲人成伊人成综合网小说| 成人黄色在线视频| 久久久777精品电影网影网| 精品综合免费视频观看| 日韩欧美国产一区二区三区| 午夜精品一区二区三区三上悠亚| 一本色道久久综合亚洲精品按摩| 国产午夜精品美女毛片视频| 韩国av一区二区| 久久综合五月天婷婷伊人| 精品综合免费视频观看| 欧美电影免费提供在线观看| 日产欧产美韩系列久久99| 777午夜精品免费视频| 视频一区中文字幕| 91精品婷婷国产综合久久性色 | 欧美一级片在线| 日本少妇一区二区| 日韩美女主播在线视频一区二区三区| 美女精品一区二区|