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

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

?? omlib.cpp

?? 圖像處理軟件,功能比較基礎
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// omlib.cpp: implementation of the Comlib class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "linjunjuan.h"
#ifndef COMLIB_H
#define COMLIB_H
#include "omlib.h"
#endif 
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include "RawDlg.h"
//===========================TIFF=====================================
 //TIFF size
#define TIFFbyte 1
#define TIFFascii 2
#define TIFFshort 3
#define TIFFlong 4
#define TIFFrational 5

#define TagNum 6
////////////////////
#define SubfileType 254//...

#define ImageWidth 256
#define ImageLength 257
#define SamplesPerPixel 277  //...
#define BitsPerSample 258
#define Compression   259
#define PhotometricInterp 262
#define StripOffsets    273
//////////////////////
////tif compression types
#define COMPnone  1
#define COMPhuff  2
#define COMPfax3  3
#define COMPfax4  4
#define COMPwrd1  0x8003
#define COMPmpnt  0x8005
long BeforeData=(long)(8+(2+TagNum*12+4));

unsigned int TIFFversion;
unsigned int TIFFentries;
unsigned int TIFFsubfile;
unsigned int TIFFsamples;
unsigned int TIFFbitspersamples;
unsigned int TIFFsamples2;
unsigned int TIFFplancfg;
unsigned int TIFFcompres;
unsigned int TIFFphotmet;

unsigned long TIFFoffset;
unsigned long TIFFrowstrip;
unsigned long TIFFstripoff;
unsigned long TIFFstripcnt;
unsigned long TIFFbytecntoff;
unsigned long TIFFbytecnt;
unsigned long PaletteOff;

unsigned long imageStart=0L;
unsigned long imageSize=0L;
unsigned int bytes=0;
///////////////////////////////////////////////
///////////////////////////////////////////////




//////////////////////////////////////////////////
//add by ZouLaMei for the tif Image read and write
//////////////////////////////////////////////////
//存取tif格式圖象所包含的子函數
void WriteTifHeader(FILE *fp);
void WriteTifDict(FILE *fp,int deep,int width); ///
void WriteTifTag(FILE *fp,int tag,int type,long length,long offset);
void fputWord(FILE *fp,int n);
void fputLong(FILE *fp,long n);
FILE *WriteFileHead(int row,int col,char*filen);
void OutputTifImageWithName(unsigned char **Image,int Row,int Col,char*FileName);

//讀取tif格式圖象所包含的子函數
unsigned int fgetWord(FILE *fp);
unsigned long fgetLong(FILE *fp);
unsigned int pixels2bytes(unsigned int n);
void DecodeTag(FILE *fp,int *width, int *depth);
unsigned char **InputTifImgWithName(int *Row,int *Col,char*FileName);

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Comlib::Comlib()
{

}

Comlib::~Comlib()
{

}

static BOOL ASSERTVALIDPOINTER(void * pointer, CString message)
{
	if(pointer == NULL)
	{
#ifdef _DEBUG
		afxDump << "Error Message " << message << "\n";
#endif
		return FALSE;
	}

	return TRUE;
}


FILE *wfwrite1(int row,int col,int type, CString filename)
{
  int i;
  unsigned char head_byte[64];

  FILE *fp = fopen(filename,"wb+"); 
  CString err;
  err.Format(" %s is not created!\n" ,filename);
  if(! ASSERTVALIDPOINTER(fp, err)) return NULL;

  for(i=0;i<64;i++) head_byte[i] = 0;

  head_byte[0] = 'I';  /* image type. 'I':b/w image, 'C':color image */
  head_byte[1] = 'M';
  head_byte[2] = head_byte[3] = 0;  /* comment space */
  head_byte[4] = col % 256;
  head_byte[5] = col / 256;  /* column size */
  head_byte[6] = row % 256;
  head_byte[7] = row / 256;  /* row size */
  head_byte[8] = head_byte[9] = 0;  /* column start */
  head_byte[10] = head_byte[11] = 0;  /* row start */
  head_byte[12] = head_byte[13] =0;
  head_byte[14] = type % 256;
  head_byte[15] = type / 256;  /* data type. 1:unsigned char, 2:int,   */
                               /*            3:float,         4:double */
  if(col*row != 0)  fwrite(head_byte,64,1,fp);

  return(fp);
}
BOOL OutputImageWithName(unsigned char **Image,int Row,int Col, CString FileName)
{
  int        RowNo;
  FILE       *fp;

  if(Image ==NULL) return FALSE;

  fp = wfwrite1(Row,Col,1,FileName);
  if(fp == NULL) return FALSE;
  long aa=0;
  for(RowNo=0;RowNo<Row;RowNo++)
    aa += fwrite(Image[RowNo],sizeof(unsigned char),Col,fp);
  fclose(fp);

  return TRUE;
}
BOOL normalize(int **input,int *row,int *col,Picture output)
{
	int max=0;
	for (int i=0;i<*row;i++)
		for (int j=0;j<*col;j++)
		{
			if (input[i][j]>max)
			{
				max=input[i][j];
			}
		}
		if (max!=0)
		{
			for (i=0;i<*row;i++)
				for (int j=0;j<*col;j++)
				{
					output.p[i][j]=(unsigned char )(input[i][j]*255/max);
				}
				return TRUE;
		}
		return FALSE;
	
}	
/*
BOOL juanji(Picture input,KERNEL kerx,KERNEL kery,Picture output)
{
	int tempx,tempy;	
	for (int i=1;i<input.row-1;i++)
		for (int j=1;j<input.col-1;j++)
		{
			tempx=0;tempy=0;
			for (int k=0;k<3;k++)
		     for (int l=0;l<3;l++)
			 {
				 tempx+=input.p[i+k-1][j+l-1]*kerx.kernel[k*3+l];
				 tempy+=input.p[i+k-1][j+l-1]*kery.kernel[k*3+l];
			 }			
			 output.p[i][j]=abs(tempx)+abs(tempy);
		}

	return TRUE;
}
*/
void Writebmp(CDC *pdc,unsigned char **Picture,int row,int col)
{
	HBITMAP hbmp;
		HDC memDC;

    BYTE* pHeader;
	pHeader=new BYTE[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];
		  BITMAPINFOHEADER* lpbmih;
		  lpbmih=(BITMAPINFOHEADER*)pHeader;
		  BITMAPINFO* lpbmi;
		  lpbmi=(BITMAPINFO*)pHeader;
		  lpbmih->biBitCount=8;
          lpbmih->biClrImportant=0;
		  lpbmih->biClrUsed=0;
		  lpbmih->biCompression=BI_RGB;
		  lpbmih->biHeight=row;
		  lpbmih->biPlanes=1;
		  lpbmih->biSize=sizeof(BITMAPINFOHEADER);
		  lpbmih->biWidth=col;
		  lpbmih->biXPelsPerMeter=80;
		  lpbmih->biYPelsPerMeter=80;
		  for(int i=0;i<256;i++)
		  {
			 lpbmi->bmiColors[i].rgbBlue=
             lpbmi->bmiColors[i].rgbGreen=
			 lpbmi->bmiColors[i].rgbRed=(BYTE)i;
		     lpbmi->bmiColors[i].rgbReserved=0;
		  }
		  BYTE* lpSrcdata;
		  unsigned int nwidth;
			 nwidth=((col+3)/4)*4;
		  lpSrcdata=new BYTE[row*nwidth];
		  BYTE temp;
		  for(i=0;i<row;i++)
		 	 for(int j=0;j<col;j++)
			 {
				 temp=Picture[i][j];
				 lpSrcdata[(row-1-i)*nwidth+j]=temp;
			 }
   
		memDC=CreateCompatibleDC(pdc->GetSafeHdc());
		hbmp=CreateDIBitmap(pdc->GetSafeHdc(),lpbmih,CBM_INIT,lpSrcdata,lpbmi,DIB_RGB_COLORS);
		SelectObject(memDC,hbmp);	
		StretchBlt(pdc->GetSafeHdc(),0,0,col,row,memDC,0,0,col,row,SRCCOPY);
		DeleteDC(memDC);
	}

   BOOL Laplacian(Picture input,KERNEL ker,Picture output)
{
int temp;	
	int **Temp;
	Temp= new int *[input.row];
	for (int s=0;s<input.row;s++)
	{
		Temp[s]=new int [input.col];
		ZeroMemory(Temp[s],input.col*sizeof(int));
	}
	if (!Temp)
		return FALSE;
	for (int i=1;i<input.row-1;i++)
		for (int j=1;j<input.col-1;j++)
		{
			temp=0;
			for (int k=0;k<3;k++)
		     for (int l=0;l<3;l++)
			 {
				 temp+=input.p[i+k-1][j+l-1]*ker.kernel[k*3+l];
			 }			
			 Temp[i][j]=abs(temp);		
		}
		normalize(Temp,&input.row,&input.col,output);		
		return TRUE;


}

BOOL Sobel(Picture input,KERNEL kx,KERNEL ky,Picture output)
{	

	int tempx,tempy;	
	int **Temp;
	Temp= new int *[input.row];
	for (int s=0;s<input.row;s++)
	{
		Temp[s]=new int [input.col];
		ZeroMemory(Temp[s],input.col*sizeof(int));
	}
	if (!Temp)
		return FALSE;
	for (int i=1;i<input.row-1;i++)
		for (int j=1;j<input.col-1;j++)
		{
			tempx=0;tempy=0;
			for (int k=0;k<3;k++)
		     for (int l=0;l<3;l++)
			 {
				 tempx+=input.p[i+k-1][j+l-1]*kx.kernel[k*3+l];
				 tempy+=input.p[i+k-1][j+l-1]*ky.kernel[k*3+l];
			 }			
			 Temp[i][j]=abs(tempx)+abs(tempy);		
		}
		normalize(Temp,&input.row,&input.col,output);		
		return TRUE;
}
BOOL Noclear(Picture input,Picture output)
{
int temp;	
	int **Temp;
	Temp= new int *[input.row];
	for (int s=0;s<input.row;s++)
	{
		Temp[s]=new int [input.col];
		ZeroMemory(Temp[s],input.col*sizeof(int));
	}
	if (!Temp)
		return FALSE;
	for (int i=2;i<input.row-2;i++)
		for (int j=2;j<input.col-2;j++)
		{
			temp=0;
			for (int k=0;k<5;k++)
		     for (int l=0;l<5;l++)
			 {
				 temp+=input.p[i+k-2][j+l-2];
			 }			
			 Temp[i][j]=temp;		
		}
		normalize(Temp,&input.row,&input.col,output);

	return TRUE;
}
BOOL Noise(Picture oldpic,Picture dealpic,int num,int gray)
{
	int x,y;
	for (int i=0;i<oldpic.row;i++)
		for (int j=0;j<oldpic.col;j++)
		{
			dealpic.p[i][j]=oldpic.p[i][j];
		}
		for (i=0;i<num;i++)
		{			
			x=rand()%oldpic.row;
			y=rand()%oldpic.col;
			dealpic.p[x][y]=gray;
		}
		return TRUE;
}

/*
BOOL Line_Deal(Picture oldpic,Picture dealpic)
{

	
			return TRUE;
}*/
//=============	申請空間函數=========//
unsigned char **fspace_2d(int row,int col )
{
  unsigned char **pic;
  pic=new unsigned char *[row];
  for (int i=0;i<row;i++)
  {
	  pic[i]=new unsigned char [col];
  	  ZeroMemory(pic[i],col);
  }
	  return pic;
}

//=============釋放空間函數==========//



void dspace_2d(unsigned char **data,int row,int col)
{ 
	for (int i=0;i<row;i++)
	delete [] data[i];
	delete [] data;
	data=NULL;
}



unsigned char **InputImageWithName(CString FileName,int &row ,int &col )
{								   
  unsigned char **output=NULL;
  FILE          *fp;
  unsigned char *str;
  int begin;//,col1;
  char first,second;
  int colorbytes;
	str=new unsigned char[40];	
	FileName.MakeLower();
    if ((fp=fopen(FileName,"rb"))==NULL)
	{
		return NULL;
	}
	else 
	{
		fread(str,1,40,fp);   	fclose(fp);	first=str[0];
		second=str[1];
		//=========================讀取BMP格式文件===========
		if (first=='B'&&second=='M')
		{
			col=str[18]+str[19]*256;
			row=str[22]+str[23]*256;
			begin=str[10]+str[11]*256+str[12]*32768;
			colorbytes=str[28]+str[29]*16;
			delete []str;
			/*
			if (colorbytes!=8)
			{
				AfxMessageBox("不是灰度圖象!");
				return NULL;
			}*/
			if ((fp=fopen(FileName,"rb"))==NULL)
			{
				return NULL;
			}
			if (colorbytes==8)
			{
				fseek(fp,begin,SEEK_SET);				
				unsigned char *lpSrcdata;
				int  nwidth=((col+3)/4)*4;
				lpSrcdata=new BYTE[row*nwidth];
				fread(lpSrcdata,sizeof(unsigned char),row*nwidth,fp);
				fclose(fp);
				output = fspace_2d(row,col);				
				if (!output)
					return NULL;
				for(int i=0;i<row;i++)
					for(int j=0;j<col;j++)
					{
						output[i][j]=lpSrcdata[(row-1-i)*nwidth+j];
					}
				delete []lpSrcdata;
					return(output);		
			}
			else if (colorbytes==24)
			{
				fseek(fp,begin,SEEK_SET);				
				unsigned char *lpSrcdata;
				int  nwidth=col*3;
				nwidth=((nwidth+3)/4)*4;
				int temp;
				lpSrcdata=new BYTE[row*nwidth];
				fread(lpSrcdata,sizeof(unsigned char),row*nwidth,fp);
				fclose(fp);
				output = fspace_2d(row,col);				
				if (!output)
					return NULL;
				for(int i=0;i<row;i++)
					for(int j=0;j<col;j++)
					{
						temp=0;
						for  (int k=0;k<3;k++)
						{
							temp+=lpSrcdata[(row-1-i)*nwidth+j*3+k];
						}
						output[i][j]=(int)((float)temp/(float)3);
					}
					delete lpSrcdata;
					return(output);
			}
			else
			{
				AfxMessageBox("不是灰度圖象或真彩!");
				return NULL;			
			}

		}
	
//====================讀取PIC格式圖片=============
		else if (first=='I'&&second=='M')
		{
			col=str[4]+str[5]*256;
			row=str[6]+str[7]*256;
			output = (unsigned char **)fspace_2d(row,col);
			if ((fp=fopen(FileName,"rb"))==NULL) 
			{
				return NULL;
			}
			else 
			{
				fseek(fp,64,SEEK_SET);
				for (int RowNo=0;RowNo<row;RowNo++)		
					fread(output[RowNo],sizeof(unsigned char),col,fp);
				fclose(fp);
				return(output);
			}
		}
				
	}
		//========================================
	//=====================讀取TIF格式圖片==================		
	if(FileName.Find(_T(".tif"))!=-1)
	{
		char *filename;
		filename = new char [FileName.GetLength()];
		strcpy(filename,FileName);
		output=InputTifImgWithName(&row,&col,filename);
		delete []filename;
		return (output);
	}
	 if(FileName.Find(_T(".raw"))!=-1)
		{
			CRawDlg dlg;
			if (dlg.DoModal()==IDOK)
			{								
				row=dlg.m_row;
				col=dlg.m_col;
				if ((fp=fopen(FileName,"rb"))==NULL) 
				{
					return NULL;
				}
				else 
				{
					fseek(fp,0,SEEK_END);
					int wholesize;
					wholesize=ftell(fp);
					if(wholesize==-1L)
						return NULL;
					else
					{
						if(wholesize!=dlg.m_col*dlg.m_row)
						{
							int state=MessageBox(NULL,"原始圖象大小和給出的大小不符,確定打開?","警告",MB_OKCANCEL);					
							if (state==IDCANCEL)
								return NULL;
						}
					}
					output = fspace_2d(dlg.m_row,dlg.m_col);
					fseek(fp,0,SEEK_SET);
					for (int RowNo=0;RowNo<dlg.m_row;RowNo++)		
						fread(output[RowNo],sizeof(unsigned char),dlg.m_col,fp);
					fclose(fp);
					return(output);
				}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩av一区| 亚洲婷婷综合久久一本伊一区| 在线观看日韩av先锋影音电影院| 国产aⅴ综合色| 国产精品小仙女| 91免费看片在线观看| 欧美高清激情brazzers| 欧美精品色综合| 国产欧美日韩另类视频免费观看| 中文字幕一区二区在线播放| 亚洲国产色一区| 国产一区啦啦啦在线观看| 成人做爰69片免费看网站| 色偷偷久久一区二区三区| 日韩你懂的电影在线观看| 亚洲欧美偷拍三级| 国产一区二区三区久久久| 欧美在线免费播放| 久久综合九色综合欧美就去吻 | 日本欧美久久久久免费播放网| 国产永久精品大片wwwapp| 日本高清不卡视频| 中文字幕av一区二区三区| 美脚の诱脚舐め脚责91| 欧美日韩美少妇| 亚洲一区免费观看| 99久久精品免费看| 久久久久久久精| 久久精品理论片| 欧美一区二区三区四区久久| 亚洲国产一区二区三区青草影视 | 日韩精品一区二区三区视频在线观看 | 精品视频999| www.一区二区| 久久免费国产精品| 国产麻豆精品在线| 五月综合激情婷婷六月色窝| 粉嫩高潮美女一区二区三区| 制服视频三区第一页精品| 免费国产亚洲视频| 日韩亚洲欧美高清| 一本色道久久综合精品竹菊| 在线不卡a资源高清| 亚洲国产日产av| 亚洲免费资源在线播放| 不卡欧美aaaaa| 麻豆视频观看网址久久| 久久久久久久久久久久久久久99 | 欧美高清一级片在线观看| 国产精品白丝jk白祙喷水网站 | 成人永久aaa| 亚洲精品中文在线影院| 欧美一级二级三级乱码| 92国产精品观看| 99精品视频在线观看免费| 国产一区二区三区精品欧美日韩一区二区三区 | 粉嫩aⅴ一区二区三区四区| 国产精品久久久久久久裸模| 972aa.com艺术欧美| 自拍偷拍国产亚洲| 欧美日韩精品免费| 成人黄页毛片网站| 丁香网亚洲国际| 久久精品国产亚洲高清剧情介绍| 粉嫩久久99精品久久久久久夜 | 日韩一区二区在线播放| 亚洲一区二三区| 欧美激情一区二区三区蜜桃视频| 色天使色偷偷av一区二区| 日韩激情在线观看| 国产亚洲综合在线| 成人免费观看视频| 日韩成人免费电影| 成人一区二区在线观看| 成人动漫一区二区在线| 色天天综合色天天久久| 国产婷婷色一区二区三区在线| 亚洲一区二区精品久久av| 成人看片黄a免费看在线| 国产亚洲精品aa| 精品在线你懂的| 精品裸体舞一区二区三区| 亚洲成人动漫在线免费观看| 中文字幕第一区综合| 色综合视频在线观看| 波多野结衣亚洲| 波多野结衣中文一区| 成人在线综合网站| gogogo免费视频观看亚洲一| 不卡电影一区二区三区| 91在线免费视频观看| 色国产综合视频| 欧美亚洲国产一区二区三区va| 国产美女视频一区| 国产欧美精品区一区二区三区 | 偷窥少妇高潮呻吟av久久免费| 国产精品日韩成人| 91麻豆精品国产自产在线观看一区| 一区二区成人在线| 蜜臀久久99精品久久久画质超高清 | 懂色av中文一区二区三区| 国产精品一级在线| 欧美精品v国产精品v日韩精品 | 亚洲综合久久av| 欧美一区二区在线不卡| 亚洲免费大片在线观看| 国产精品免费aⅴ片在线观看| 欧美日韩成人一区二区| 成人免费视频免费观看| 777午夜精品视频在线播放| 一区二区国产盗摄色噜噜| 成人性生交大片免费看中文 | 亚洲成av人片| 免费观看久久久4p| 成人黄色小视频在线观看| 欧美另类久久久品| 亚洲精品欧美专区| 色噜噜狠狠一区二区三区果冻| 色婷婷综合久久久| 激情文学综合丁香| 国产午夜精品一区二区| 亚洲欧美日韩一区二区| 国产精品嫩草久久久久| 亚洲欧美一区二区三区国产精品 | 91精品国产色综合久久ai换脸 | 欧美成人vr18sexvr| 亚洲成人777| 91成人看片片| 亚洲综合色视频| 一本到不卡精品视频在线观看| 国产精品理论片| 波波电影院一区二区三区| 中文字幕在线不卡一区 | 欧美极品aⅴ影院| 国产成人免费视频| 亚洲精品高清在线观看| 国产高清精品网站| www.日韩大片| 制服丝袜亚洲色图| 欧美精品一区二区三区在线| 精品日韩欧美在线| 午夜精品久久久久久久99樱桃| 99在线热播精品免费| 精品国产一区二区三区久久影院| 日韩电影免费在线看| 在线播放欧美女士性生活| 国产成人精品一区二区三区网站观看| 久久一区二区视频| 一区二区三区国产精品| 国产精品自拍在线| 欧美一区二区在线免费观看| 国产午夜精品一区二区三区嫩草| 日本午夜一本久久久综合| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲午夜免费电影| 91麻豆精品国产| 丁香亚洲综合激情啪啪综合| 亚洲色欲色欲www| 日韩精品资源二区在线| 国产福利精品一区| 亚洲成a人片综合在线| 久久精品人人做人人爽人人| 欧美午夜电影在线播放| 国产91精品入口| 五月婷婷色综合| 一区二区三区日韩| 久久精品欧美一区二区三区不卡| 欧美精品 日韩| 色悠悠亚洲一区二区| 国产酒店精品激情| 奇米影视在线99精品| 一区二区不卡在线播放| 日韩午夜激情电影| 久久成人免费日本黄色| 国产欧美一区二区精品忘忧草| 欧美精品第1页| 欧美电视剧免费观看| 欧美三级在线播放| 欧美视频精品在线| 在线观看av一区二区| 99久久精品国产观看| 91免费小视频| 色综合网站在线| 欧美亚洲日本一区| 91精品综合久久久久久| 欧美一区中文字幕| 精品日本一线二线三线不卡| 久久久久久亚洲综合| 国产精品欧美久久久久无广告| 国产日韩欧美精品一区| 亚洲欧洲精品天堂一级| 亚洲午夜免费视频| 国产精品卡一卡二卡三| 欧美经典三级视频一区二区三区| 国产精品污污网站在线观看| 亚洲精品成人悠悠色影视| 视频一区二区三区入口| 国产成人精品三级麻豆| 在线观看不卡一区| 久久久久久久久久看片|