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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cdib.cpp

?? VC++圖像處理程序設(shè)計課本和代碼.
?? CPP
字號:
#include "stdafx.h"
#include "cdib.h"
#include "windowsx.h"
#include "math.h"
#define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4) 

CDib::CDib()
{

}

CDib::~CDib()
{
    GlobalFreePtr(m_pBitmapInfo);
}

void CDib::LoadFile(const char* dibFileName)
{
	strcpy(m_fileName,dibFileName);
    CFile dibFile(m_fileName, CFile::modeRead);
    
    dibFile.Read((void*)&bitmapFileHeader,sizeof(BITMAPFILEHEADER));

    if (bitmapFileHeader.bfType == 0x4d42)
    {
        DWORD fileLength = dibFile.GetLength();    
        DWORD size = fileLength -
			sizeof(BITMAPFILEHEADER);
        BYTE* pDib =
            (BYTE*)GlobalAllocPtr(GMEM_MOVEABLE, size);
        dibFile.Read((void*)pDib, size);
        dibFile.Close();

        m_pBitmapInfo = (BITMAPINFO*) pDib;
        m_pBitmapInfoHeader = (BITMAPINFOHEADER*) pDib;
        m_pRGB = (RGBQUAD*)(pDib +
			m_pBitmapInfoHeader->biSize);
        int m_numberOfColors = GetNumberOfColors();
        if (m_pBitmapInfoHeader->biClrUsed == 0)
            m_pBitmapInfoHeader->biClrUsed =
			    m_numberOfColors;
        DWORD colorTableSize = m_numberOfColors *
            sizeof(RGBQUAD);
        m_pData = pDib + m_pBitmapInfoHeader->biSize
            + colorTableSize;
		if (m_pRGB == (RGBQUAD*)m_pData) // No color table
			m_pRGB = NULL;
        m_pBitmapInfoHeader->biSizeImage = GetSize();
		m_valid = TRUE;
    }    
    else
    {
        m_valid = FALSE;
        AfxMessageBox("This isn't a bitmap file!");
    }
}

BOOL CDib::IsValid()
{
    return m_valid;
}
        
char* CDib::GetFileName()
{
    return m_fileName;
}
        
UINT CDib::GetWidth()
{
    return (UINT) m_pBitmapInfoHeader->biWidth;
}
        
UINT CDib::GetHeight()
{
    return (UINT) m_pBitmapInfoHeader->biHeight;
}
        
DWORD CDib::GetSize()
{
    if (m_pBitmapInfoHeader->biSizeImage != 0)
        return m_pBitmapInfoHeader->biSizeImage;
	else
    {
        DWORD height = (DWORD) GetHeight();
        DWORD width = (DWORD) GetWidth();
        return height * width;
    }
}

DWORD CDib::GetDibWidthBytes()
{
     byBitCount=m_pBitmapInfoHeader->biBitCount;
	LONG nWidth=m_pBitmapInfoHeader->biWidth;

	dwWidthBytes = (DWORD)m_pBitmapInfoHeader->biWidth;	//8-bits
	if(byBitCount == 1) dwWidthBytes = (nWidth + 7) / 8;
	else if(byBitCount == 4) dwWidthBytes = (nWidth + 1) / 2;
	else if(byBitCount == 24) dwWidthBytes = 3 * nWidth ;
	
	while((dwWidthBytes & 3) != 0)dwWidthBytes++;

	return dwWidthBytes;
}

UINT CDib::GetNumberOfColors()
{
	int numberOfColors;

    if ((m_pBitmapInfoHeader->biClrUsed == 0) &&
          (m_pBitmapInfoHeader->biBitCount < 9))
	{
		switch (m_pBitmapInfoHeader->biBitCount)
		{
		    case 1: numberOfColors = 2; break;
		    case 4: numberOfColors = 16; break;
		    case 8: numberOfColors = 256;
		}
	}
    else
		numberOfColors = (int) m_pBitmapInfoHeader->biClrUsed;

    return numberOfColors;
}
    
BYTE* CDib::GetData()
{
    return m_pData;
}
BYTE* CDib::GetData2()
{
    if(GetRGB())
       m_pData2=m_pData;
	return m_pData2;
}
RGBQUAD* CDib::GetRGB()
{
    return m_pRGB;
}

BITMAPINFO* CDib::GetInfo()
{
    return m_pBitmapInfo;
}

WORD CDib::PaletteSize(LPBYTE lpDIB) 
{ 
    return (DIBNumColors(lpDIB) * sizeof(RGBTRIPLE)); 
} 

WORD CDib::DIBNumColors(LPBYTE lpDIB) 
{ 
    WORD wBitCount;  // DIB bit count 
    wBitCount = ((LPBITMAPCOREHEADER)lpDIB)->bcBitCount; 
    switch (wBitCount) 
    { 
        case 1: 
            return 2; 
        case 4: 
            return 16; 
        case 8: 
            return 256; 
        default: 
            return 0; 
    } 
} 

void CDib::SaveFile(const CString filename)
{
    BITMAPFILEHEADER    bmfHdr;     // Header for Bitmap file 
    LPBITMAPINFOHEADER  lpBI;       // Pointer to DIB info structure 
    DWORD               dwDIBSize; 
 
    bmfHdr.bfType = 0x4d42;  // "BM" 
    lpBI = (LPBITMAPINFOHEADER)m_pBitmapInfoHeader; 
    dwDIBSize = *(LPDWORD)lpBI + PaletteSize((LPBYTE)lpBI);   
    if ((lpBI->biCompression == BI_RLE8) || (lpBI->biCompression == BI_RLE4)) 
        dwDIBSize += lpBI->biSizeImage; 
    else 
    { 
        DWORD dwBmBitsSize;  // Size of Bitmap Bits only 
        dwBmBitsSize = WIDTHBYTES((lpBI->biWidth)*((DWORD)lpBI->biBitCount)) * 
                lpBI->biHeight; 
        dwDIBSize += dwBmBitsSize; 
        lpBI->biSizeImage = dwBmBitsSize; 
    } 
    bmfHdr.bfSize = dwDIBSize + sizeof(BITMAPFILEHEADER); 
    bmfHdr.bfReserved1 = 0; 
    bmfHdr.bfReserved2 = 0; 
    bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + lpBI->biSize + 
            PaletteSize((LPBYTE)lpBI); 
 
	CFile dibFile(filename, CFile::modeWrite|CFile::modeCreate);
	dibFile.Write(&bmfHdr, sizeof(BITMAPFILEHEADER));
	dibFile.WriteHuge(lpBI, dwDIBSize);
	dibFile.Close();

}


void CDib::RGBtoGrade()
{ 
	if(GetRGB())
       m_pData2=m_pData;
	else
	{
		BYTE r,g,b;
		int height,wide,size;
		height=GetHeight();
		wide=GetWidth();
		size=height*wide;
		m_pData2=(BYTE*)GlobalAllocPtr(GMEM_MOVEABLE, size);
		LONG lLineBytes =GetDibWidthBytes();
		for(int j=0; j<height; j++)
		{
			for(int  i=0; i<wide; i++)
			{
				b=m_pData[j*lLineBytes+3*i];
				g=m_pData[j*lLineBytes+3*i+1];
				r=m_pData[j*lLineBytes+3*i+2];
				m_pData2[j*wide+i]=(BYTE)(0.3*r+0.59*g+0.11*b);  
			}
		}
	}
}


void CDib::GradetoRGB()
{
	if(GetRGB())
       m_pData2=m_pData;
   else
   {
	   BYTE r,g,b;
		int height,wide;
		height=GetHeight();
		wide=GetWidth();
		LONG lLineBytes =GetDibWidthBytes();
		for(int j=0; j<height; j++)
		{
			for(int  i=0; i<wide; i++)
			{
				m_pData[(height-j-1)*lLineBytes+3*i]=m_pData2[(height-1-j)*wide+i];
				m_pData[(height-j-1)*lLineBytes+3*i+1]=m_pData2[(height-1-j)*wide+i];
				m_pData[(height-j-1)*lLineBytes+3*i+2]=m_pData2[(height-1-j)*wide+i];
			
			}
		}
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女网站一区二区| 国产成人精品亚洲777人妖| 欧美精品一区二区在线播放| 国产成人午夜精品影院观看视频 | 喷水一区二区三区| 中国av一区二区三区| 欧美一级片免费看| 欧美午夜理伦三级在线观看| 春色校园综合激情亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲色图视频免费播放| 久久九九影视网| 欧美一区二区三区人| 精品盗摄一区二区三区| 欧美视频一区二区三区四区| 国产盗摄精品一区二区三区在线| 青青青伊人色综合久久| 一区二区高清视频在线观看| 亚洲国产精品成人综合| 亚洲精品一区二区三区香蕉| 9191成人精品久久| 欧美无砖专区一中文字| 91香蕉视频污| k8久久久一区二区三区| 国产精品99久| 国内精品伊人久久久久av影院 | 午夜成人免费电影| 亚洲免费观看高清完整版在线| 国产精品沙发午睡系列990531| 久久这里只精品最新地址| 欧美一区二区播放| 91 com成人网| 777奇米四色成人影色区| 欧美日韩小视频| 欧美性生活影院| 欧美专区在线观看一区| 91成人在线观看喷潮| 色偷偷88欧美精品久久久| 91一区二区三区在线观看| 成人高清视频在线观看| 成人免费看黄yyy456| 成人免费福利片| 不卡在线观看av| 97久久久精品综合88久久| 91麻豆自制传媒国产之光| 成a人片国产精品| 91视视频在线观看入口直接观看www | 日韩av一区二| 免费日韩伦理电影| 久久精品国产亚洲a| 久久99精品视频| 国产老肥熟一区二区三区| 国产精品888| 成人午夜短视频| 99精品欧美一区二区三区综合在线| 成人免费观看视频| 色婷婷综合五月| 欧美精品一二三四| 欧美xxxxx裸体时装秀| 久久一区二区三区四区| 国产欧美一区二区三区在线看蜜臀| 国产日本欧洲亚洲| 日韩毛片视频在线看| 亚洲宅男天堂在线观看无病毒| 亚洲一区二区三区四区在线免费观看 | 国产欧美日韩在线视频| 亚洲欧洲无码一区二区三区| 亚洲愉拍自拍另类高清精品| 日本不卡高清视频| 粉嫩aⅴ一区二区三区四区| 欧美成人一级视频| 国产欧美一区二区精品性色 | 男女性色大片免费观看一区二区| 蜜桃久久精品一区二区| 国产成a人亚洲| 欧美亚一区二区| 精品欧美久久久| 国产精品国产a| 亚洲高清免费观看高清完整版在线观看| 日本少妇一区二区| 成a人片国产精品| 欧美日韩国产乱码电影| 国产午夜精品一区二区| 一区二区三区日韩在线观看| 久久精品久久综合| 91在线视频官网| 日韩精品一区二区三区四区| 亚洲欧洲av在线| 麻豆精品视频在线观看视频| 91日韩一区二区三区| 欧美精三区欧美精三区| 国产精品久久久一本精品| 日本成人中文字幕| 91尤物视频在线观看| 精品久久久久一区| 一区二区三区不卡视频| 国产乱子伦一区二区三区国色天香| 欧美羞羞免费网站| 国产精品婷婷午夜在线观看| 蜜桃一区二区三区在线观看| 91麻豆视频网站| 国产午夜精品一区二区| 免费看欧美美女黄的网站| 色琪琪一区二区三区亚洲区| 国产亚洲午夜高清国产拍精品| 日韩中文字幕一区二区三区| 97se亚洲国产综合自在线观| 久久久久久亚洲综合影院红桃| 亚洲成人激情社区| 99精品视频中文字幕| 国产亚洲成aⅴ人片在线观看| 日本一道高清亚洲日美韩| 91黄色免费网站| 日韩美女视频19| 国产v日产∨综合v精品视频| 日韩欧美电影一区| 免费在线视频一区| 欧美日韩大陆在线| 亚洲午夜精品一区二区三区他趣| 成人精品一区二区三区四区 | 91亚洲精华国产精华精华液| 国产欧美综合在线| 国内成人精品2018免费看| 欧美男人的天堂一二区| 亚洲国产另类精品专区| 91麻豆国产自产在线观看| 中文子幕无线码一区tr| 成人做爰69片免费看网站| 国产欧美日韩三级| 国产一区二区三区在线观看免费 | 91国产成人在线| 中文字幕一区二区三| 国产91高潮流白浆在线麻豆| 国产无人区一区二区三区| 国产又粗又猛又爽又黄91精品| 日韩一区二区不卡| 久久精品国产999大香线蕉| 日韩午夜av一区| 久久国产生活片100| 精品国产人成亚洲区| 精品一区二区三区久久久| 久久夜色精品一区| 成人激情免费视频| 中文字幕在线观看一区二区| 不卡的电视剧免费网站有什么| 亚洲欧洲成人自拍| 在线视频你懂得一区二区三区| 亚洲一线二线三线视频| 欧美精品在欧美一区二区少妇| 人人狠狠综合久久亚洲| 欧美xxxx在线观看| 国产成人精品一区二| 亚洲欧美日韩久久精品| 91国内精品野花午夜精品| 日韩电影免费在线看| 精品国偷自产国产一区| 成人午夜av电影| 一区二区免费在线播放| 欧美一级搡bbbb搡bbbb| 国产福利精品导航| 一区二区三区国产精华| 日韩一区二区三区av| 成人禁用看黄a在线| 亚洲精品国产高清久久伦理二区| 欧美精品vⅰdeose4hd| 国产一区二区不卡老阿姨| 亚洲精品视频自拍| 91精品福利在线一区二区三区 | 日日欢夜夜爽一区| 久久久不卡网国产精品二区| 一本大道久久a久久综合| 欧美a级一区二区| 国产精品久久久久久久久免费相片| 91久久精品国产91性色tv| 美女性感视频久久| 亚洲四区在线观看| 555www色欧美视频| 成人白浆超碰人人人人| 亚洲成精国产精品女| 国产亚洲精品aa| 欧美日韩一区二区三区高清| 久久99国产精品麻豆| 一区二区视频在线看| 欧美成人一区二区三区片免费| 91亚洲午夜精品久久久久久| 蜜桃av一区二区三区| 亚洲免费在线观看视频| 欧美大尺度电影在线| 色综合天天综合色综合av| 免费成人在线影院| 亚洲精品成a人| 久久综合九色综合97_久久久| 欧美亚洲国产bt| 国产成人av一区二区| 日韩成人免费看| 亚洲欧美日韩国产综合| 久久久亚洲精华液精华液精华液| 欧美怡红院视频| 不卡av免费在线观看| 国产在线精品一区二区|