亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
悠悠色在线精品| 国产成人亚洲综合a∨婷婷| 欧美zozozo| 欧美精品国产精品| 91麻豆国产在线观看| 国产精品一区二区在线观看不卡| 午夜精品久久久久影视| 亚洲综合丝袜美腿| 亚洲成人午夜电影| 石原莉奈在线亚洲二区| 国产精品久久久久久久裸模| 欧美成人艳星乳罩| 日韩欧美中文一区二区| 国内精品不卡在线| 成人午夜视频网站| 99这里只有精品| 日本福利一区二区| 欧美美女激情18p| 欧美电影一区二区三区| 理论电影国产精品| 一区二区在线观看不卡| 欧美日韩亚洲国产综合| 五月天亚洲婷婷| 亚洲国产综合91精品麻豆| 天天综合日日夜夜精品| 日韩精品欧美成人高清一区二区| 日韩国产在线一| 久久国产精品无码网站| 大胆欧美人体老妇| 91亚洲精品乱码久久久久久蜜桃 | 色综合天天视频在线观看| 99国产精品99久久久久久| 日本高清不卡视频| 日韩三级.com| 国产精品久久久久四虎| 亚洲国产乱码最新视频| 极品少妇xxxx精品少妇| 99精品在线观看视频| 欧美伦理电影网| 中文字幕欧美区| 亚洲一卡二卡三卡四卡无卡久久| 美腿丝袜一区二区三区| 99九九99九九九视频精品| 制服丝袜国产精品| 成人免费一区二区三区视频| 蜜桃av一区二区三区电影| 福利一区福利二区| 欧美一区二区三区人| 欧美韩国日本不卡| 亚洲一级不卡视频| 国产在线国偷精品免费看| 日本韩国欧美一区二区三区| 精品国产污污免费网站入口| 亚洲综合色婷婷| 国产成人精品免费在线| 久久精品亚洲一区二区三区浴池| 亚洲小说欧美激情另类| 国产精品1024| 精品美女一区二区| 亚洲成av人片在线| 色激情天天射综合网| 亚洲国产激情av| 国产美女精品一区二区三区| 欧美另类videos死尸| 亚洲精品日产精品乱码不卡| 成人高清视频在线观看| 久久综合av免费| 日本不卡的三区四区五区| 在线看国产一区| 国产精品成人在线观看| 国产成人夜色高潮福利影视| 欧美大白屁股肥臀xxxxxx| 日韩精品1区2区3区| 欧美日韩一卡二卡| 中文字幕一区二区三区视频| 久久精品国产99国产精品| 欧美日韩一本到| 亚洲欧美日韩国产中文在线| 国产精品亚洲第一区在线暖暖韩国 | 国产精品网站导航| 国产高清久久久| 中文字幕av一区二区三区高| 国产91富婆露脸刺激对白| 国产视频一区在线播放| av不卡免费电影| 亚洲素人一区二区| 欧美在线|欧美| 亚洲国产另类av| 日韩一区二区三区在线观看| 狠狠色丁香久久婷婷综| 欧美激情综合五月色丁香小说| 成人永久免费视频| 亚洲色欲色欲www| 欧美日韩在线不卡| 精品一区二区三区免费播放| 国产亲近乱来精品视频 | 日韩电影在线免费看| 欧美日韩在线免费视频| 久久精品国产精品青草| 国产精品网曝门| 99精品欧美一区二区蜜桃免费| 亚洲欧洲精品一区二区精品久久久| thepron国产精品| 成人欧美一区二区三区在线播放| 久久久久国产一区二区三区四区| 91美女福利视频| 91在线观看视频| 韩国在线一区二区| yourporn久久国产精品| 一本久久综合亚洲鲁鲁五月天 | 亚洲综合清纯丝袜自拍| 亚洲图片一区二区| 国产suv精品一区二区6| 欧美不卡一区二区三区四区| 亚洲成人激情自拍| 欧美日韩国产高清一区二区三区| 欧美videos中文字幕| 免费在线一区观看| 欧美一区二区三区小说| 亚洲成年人网站在线观看| 一本色道久久加勒比精品| 亚洲欧美一区二区三区久本道91| 国产真实乱子伦精品视频| 精品成人a区在线观看| 久久丁香综合五月国产三级网站 | 欧美一二区视频| 午夜精品福利久久久| 99久免费精品视频在线观看 | 欧洲精品在线观看| 久久av资源站| 国产精品看片你懂得| 国产91丝袜在线播放0| 亚洲男人的天堂一区二区| 99精品视频一区二区三区| 1000部国产精品成人观看| 91精品国产色综合久久| 久久精品国产精品亚洲红杏| 精品国产制服丝袜高跟| 99国产精品99久久久久久| 午夜精品久久久久久久久久久 | 色偷偷久久一区二区三区| 一级做a爱片久久| 国产精品青草综合久久久久99| 在线观看91视频| 国产精品正在播放| 午夜精品福利在线| 久久品道一品道久久精品| 欧美日韩国产三级| 国产91对白在线观看九色| 裸体歌舞表演一区二区| 欧美国产成人精品| 5566中文字幕一区二区电影| 色老头久久综合| 激情综合色播五月| 一级精品视频在线观看宜春院 | 亚洲色图欧美激情| 久久久不卡影院| 精品国产91九色蝌蚪| www.在线成人| 精品夜夜嗨av一区二区三区| 青娱乐精品视频| 日本欧美在线观看| 亚洲五码中文字幕| 亚洲精品一二三| 亚洲免费观看高清完整版在线| 又紧又大又爽精品一区二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美大度的电影原声| 欧美一级xxx| 欧美男女性生活在线直播观看| 欧美色图天堂网| 欧美亚洲国产bt| 在线亚洲人成电影网站色www| 欧美性欧美巨大黑白大战| 在线观看国产91| 欧美高清激情brazzers| 9191成人精品久久| 久久夜色精品一区| 中文字幕视频一区| 亚洲国产成人精品视频| 男女激情视频一区| 成人免费福利片| 欧美色成人综合| 欧美日韩成人综合| 国产日韩av一区二区| 亚洲婷婷在线视频| 一区二区三区四区蜜桃| 亚洲综合久久久久| 日韩av不卡在线观看| 久久www免费人成看片高清| 成人国产精品免费观看动漫| 9色porny自拍视频一区二区| 欧美嫩在线观看| 久久欧美中文字幕| 青椒成人免费视频| 91麻豆自制传媒国产之光| 久久男人中文字幕资源站| 亚洲成国产人片在线观看| 国产91精品久久久久久久网曝门| 欧美日韩高清一区二区|