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

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

?? cdib.cpp

?? 圖像處理算法相關(guān)VC程序 VC++圖像處理程序設(shè)計(jì)配套光盤
?? CPP
字號(hào):
#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];
			
			}
		}
   }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本中文字幕区| 日韩电影在线观看电影| 制服丝袜中文字幕亚洲| 福利电影一区二区三区| 三级一区在线视频先锋| 中文字幕在线免费不卡| 精品福利一区二区三区免费视频| 色婷婷综合久久久中文一区二区| 九色综合国产一区二区三区| 一区二区国产视频| 国产精品视频第一区| 日韩欧美国产一二三区| 欧美日韩小视频| 91丨porny丨中文| 成人网在线播放| 久久99久久精品| 日本欧美一区二区| 亚洲国产aⅴ天堂久久| 国产精品免费丝袜| 欧美激情资源网| 国产亚洲欧美日韩在线一区| 欧美一区二区精品久久911| 欧美午夜不卡在线观看免费| 99riav一区二区三区| 国产99久久久久久免费看农村| 美女视频黄频大全不卡视频在线播放| 亚洲综合丁香婷婷六月香| 中文字幕一区二区三区色视频| 国产性天天综合网| 久久嫩草精品久久久精品一| 日韩欧美一二三| 日韩一级在线观看| 日韩欧美国产1| 欧美一级免费大片| 欧美一区二区视频网站| 在线综合视频播放| 制服丝袜亚洲色图| 日韩一区二区三区免费观看| 日韩视频免费观看高清完整版 | 亚洲福利视频三区| 亚洲综合丁香婷婷六月香| 亚洲女同ⅹxx女同tv| 亚洲麻豆国产自偷在线| 日韩美女久久久| 亚洲精品乱码久久久久久久久| 亚洲另类春色国产| 亚洲二区在线视频| 青椒成人免费视频| 久久国产麻豆精品| 国产成人免费在线| av一二三不卡影片| 日本久久电影网| 欧美精品vⅰdeose4hd| 日韩区在线观看| 久久欧美一区二区| 国产精品蜜臀在线观看| 亚洲最大的成人av| 日韩在线一二三区| 国产中文一区二区三区| 国产精品亚洲人在线观看| 成人亚洲一区二区一| 99re热视频精品| 69久久夜色精品国产69蝌蚪网| 3d动漫精品啪啪1区2区免费| 精品国产乱码久久久久久久| 国产精品丝袜在线| 亚洲国产精品一区二区www| 日韩电影网1区2区| 国产成人在线色| 91黄视频在线| 日韩三级在线免费观看| 久久久久久麻豆| 日韩伦理av电影| 日韩不卡手机在线v区| 国产一区二区美女诱惑| 色综合久久综合网欧美综合网| 欧美在线免费视屏| 精品国产制服丝袜高跟| √…a在线天堂一区| 蜜臀av一区二区在线免费观看| 国产a久久麻豆| 欧美另类变人与禽xxxxx| 国产无一区二区| 亚洲国产毛片aaaaa无费看| 国产一区二区三区四区五区美女 | 日韩精品一区二区三区老鸭窝| 国产亚洲欧美一区在线观看| 亚洲线精品一区二区三区| 激情五月婷婷综合| 欧美午夜片在线观看| 国产拍揄自揄精品视频麻豆| 亚洲一区在线播放| 国产69精品久久久久777| 欧美人伦禁忌dvd放荡欲情| 国产清纯白嫩初高生在线观看91 | 亚洲第一av色| 大胆欧美人体老妇| 欧美xxxx老人做受| 一区二区三区精品在线观看| 国精产品一区一区三区mba桃花| 欧美丝袜丝nylons| 国产精品人人做人人爽人人添| 性做久久久久久免费观看| jlzzjlzz亚洲日本少妇| 欧美精品一区二区三区蜜桃视频| 性感美女极品91精品| 色综合中文字幕| 中文成人av在线| 国产一区二区三区四| 欧美一区二区三区不卡| 悠悠色在线精品| 成人av电影在线观看| 久久综合五月天婷婷伊人| 亚洲成人av资源| 91黄色激情网站| 亚洲久草在线视频| 成人小视频免费在线观看| 欧美精品一区二区三| 麻豆视频一区二区| 欧美一区二区福利在线| 亚洲成人综合在线| 在线免费观看日韩欧美| 国产精品不卡一区二区三区| 国产高清不卡二三区| 26uuu国产电影一区二区| 毛片一区二区三区| 日韩欧美视频在线 | 9色porny自拍视频一区二区| 欧美国产精品久久| 国产成人精品亚洲午夜麻豆| 26uuu国产日韩综合| 国内成人免费视频| www精品美女久久久tv| 加勒比av一区二区| 久久影院视频免费| 国产成人超碰人人澡人人澡| 国产日韩精品一区二区三区| 成人在线视频一区| 国产精品福利一区| 色丁香久综合在线久综合在线观看| 亚洲欧洲av另类| 欧美在线观看一区| 亚洲国产毛片aaaaa无费看| 欧美日韩不卡视频| 日韩电影免费一区| 久久综合丝袜日本网| 国产精品资源在线| 国产精品久久夜| 欧美影片第一页| 日本人妖一区二区| 久久久久久亚洲综合影院红桃| 丁香婷婷综合网| 中文字幕亚洲一区二区va在线| 99久久国产综合色|国产精品| 亚洲三级在线观看| 欧美日韩视频一区二区| 久久精品国产**网站演员| 久久久美女毛片| 99久久综合狠狠综合久久| 亚洲最新视频在线观看| 日韩一卡二卡三卡四卡| 国产99精品在线观看| 亚洲区小说区图片区qvod| 欧美人体做爰大胆视频| 国产一区福利在线| 一区二区三区资源| 日韩欧美国产午夜精品| 夫妻av一区二区| 性做久久久久久免费观看| 欧美精品一区二区在线观看| av不卡一区二区三区| 亚洲成人自拍网| 久久人人97超碰com| 在线免费一区三区| 精品一区二区三区在线观看国产| 国产精品免费丝袜| 欧美一区二区在线不卡| 波多野结衣中文字幕一区二区三区| 亚洲主播在线观看| 久久久亚洲欧洲日产国码αv| 在线免费精品视频| 国产精品一区一区| 亚洲.国产.中文慕字在线| 久久精品男人天堂av| 欧美精三区欧美精三区| 国产99久久久国产精品潘金 | www.欧美色图| 蜜臀91精品一区二区三区 | 最新国产成人在线观看| 欧美喷水一区二区| 粉嫩13p一区二区三区| 亚洲aaa精品| 亚洲欧洲av另类| 久久欧美一区二区| 7777精品伊人久久久大香线蕉最新版 | 91一区在线观看| 极品少妇一区二区三区精品视频 | 日韩国产成人精品| 中文字幕一区二区三区四区不卡 | 欧美丰满高潮xxxx喷水动漫|