日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html

發(fā)布時間:2023/12/9 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CImage類

Visual C++的CBitmap類的功能是比較弱的,它只能顯示出在資源中的圖標(biāo)、位圖、光標(biāo)以及圖元文件的內(nèi)容,而不像VB中的Image控件可以顯示出絕大多數(shù)的外部圖像文件(BMP、GIF、JPEG等)。如果想要在對話框或其他窗口中顯示外部圖像文件則只能借助于第三方提供的控件或代碼,未免過于繁瑣.

現(xiàn)在,.net引入了一個功能非常強大的新類 ----- CImage.有了CImage類,Visual C++在圖像方面的缺憾將一去不復(fù)返。CImage是MFC和ATL共享的新類,它能從外部磁盤中調(diào)入一個JPEG、GIF、BMP和PNG格式的圖像文件加以顯示,而且這些文件格式可以相互轉(zhuǎn)換。例如通過簡單的幾句,就可以實現(xiàn)CImage類和CBitmap類實例的:

HBITMAP hBitmap=image.Detach();?
CBitmap?bmp;?
bmp.Attach(hBitmap);

這樣一來,就又回歸到以前操縱CBitmap的方式了.CImage本身封裝了DIB(設(shè)備無關(guān)位圖)的功能,因而能夠處理每個位圖像素。

它具有下列最酷特性:?
1、AlphaBlend支持像素級的顏色混合,從而實現(xiàn)透明和半透明的效果。?
2、PlgBlt能使一個矩形區(qū)域的位圖映射到一個平行四邊形區(qū)域中,而且還可能使用位屏蔽操作。?
3、TransparentBlt在目標(biāo)區(qū)域中產(chǎn)生透明圖像,SetTransparentColor用來設(shè)置某種顏色是透明色。?
4、MaskBlt在目標(biāo)區(qū)域中產(chǎn)生源位圖與屏蔽位圖合成的效果。

由于CImage在不同的Windows操作系統(tǒng)中其某些性能是不一樣的,因此在使用時要特別注意。例如,CImage::PlgBlt和 CImage::MaskBlt只能在 Windows NT 4.0 或更高版本中使用,但不能運行在Windows 95/98 應(yīng)用程序中。CImage::AlphaBlend和CImage::TransparentBlt也只能在 Windows 2000/98或其更高版本中使用。即使在Windows 2000運行程序還必須將stdafx.h文件中的WINVER和_WIN32_WINNT的預(yù)定義修改成0x0500才能正常使用。

使用CImage的一般方法?
使用CImage的一般方法是這樣的過程:?
(1) 打開應(yīng)用程序的stdafx.h文件添加CImage類的包含文件:?
#include <atlimage.h>?
(2) 定義一個CImage類對象,然后調(diào)用CImage::Load方法裝載一個外部圖像文件。?
(3) 調(diào)用CImage::Draw方法繪制圖像。Draw方法具有如下定義:

BOOL Draw( HDC hDestDC, int xDest, int yDest,?
int nDestWidth, int nDestHeight, int xSrc, int ySrc,?
int nSrcWidth, int nSrcHeight );?
BOOL Draw( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc );?
BOOL Draw( HDC hDestDC, int xDest, int yDest );?
BOOL Draw( HDC hDestDC, const POINT& pointDest );?
BOOL Draw( HDC hDestDC, int xDest, int yDest,?
int nDestWidth, int nDestHeight );?
BOOL Draw( HDC hDestDC, const RECT& rectDest );

其中,hDestDC用來指定繪制的目標(biāo)設(shè)備環(huán)境句柄,(xDest, yDest)和pointDest用來指定圖像顯示的位置,這個位置和源圖像的左上角點相對應(yīng)。nDestWidth和nDestHeight分別指定圖像要顯示的高度和寬度,xSrc、ySrc、nSrcWidth和nSrcHeight用來指定要顯示的源圖像的某個部分所在的位置和大小。 rectDest和rectSrc分別用來指定目標(biāo)設(shè)備環(huán)境上和源圖像所要顯示的某個部分的位置和大小。?
需要說明的是,Draw方法綜合了StretchBlt、TransparentBlt和AlphaBlend函數(shù)的功能。默認時,Draw的功能和 StretchBlt相同。但當(dāng)圖像含有透明色或Alpha通道時,它的功能又和TransparentBlt、AlphaBlend相同。因此,在一般情況下,我們都應(yīng)該盡量調(diào)用CImage::Draw方法來繪制圖像。?
例如,下面的示例Ex_Image是實現(xiàn)這樣的功能:當(dāng)選擇"文件"ò"打開"菜單命令后,彈出一個文件打開對話框。當(dāng)選定一個圖像文件后,就會在窗口客戶區(qū)中顯示該圖像文件內(nèi)容。這個示例的具體步驟如下:?
(1) 創(chuàng)建一個默認的單文檔程序項目Ex_Image。?
(2) 打開stdafx.h文件中添加CImage類的包含文件atlimage.h。?
(3) 在CEx_ImageView類添加ID_FILE_OPEN的COMMAND事件映射程序,并添加下列代碼:

void CEx_ImageView::OnFileOpen()?
{?
CString strFilter;?
CSimpleArray<GUID> aguidFileTypes;?
HRESULT hResult;?
// 獲取CImage支持的圖像文件的過濾字符串?
hResult = m_Image.GetExporterFilterString(strFilter,aguidFileTypes,?
_T( "All Image Files") );?
if (FAILED(hResult)) {?
MessageBox("GetExporterFilter調(diào)用失敗!");?
return;?
}?
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST, strFilter);?
if(IDOK != dlg.DoModal())?
return;?
m_Image.Destroy();?
// 將外部圖像文件裝載到CImage對象中?
hResult = m_Image.Load(dlg.GetFileName());?
if (FAILED(hResult)) {?
MessageBox("調(diào)用圖像文件失敗!");?
return;?
}?
// 設(shè)置主窗口標(biāo)題欄內(nèi)容?
CString str;?
str.LoadString(AFX_IDS_APP_TITLE);?
AfxGetMainWnd()->SetWindowText(str + " - " +dlg.GetFileName());?
Invalidate(); // 強制調(diào)用OnDraw?
}

(4) 定位到CEx_ImageView::OnDraw函數(shù)處,添加下列代碼:

void CEx_ImageView::OnDraw(CDC* pDC)?
{?
CEx_ImageDoc* pDoc = GetDocument();?
ASSERT_VALID(pDoc);?
if (!m_Image.IsNull()) {?
m_Image.Draw(pDC->m_hDC,0,0);?
}?
}

(5) 打開Ex_ImageView.h文件,添加一個公共的成員數(shù)據(jù)m_Image:

public:?
CImage m_Image;

(6) 編譯并運行。單擊"打開"工具按鈕,在彈出的對話框中指定一個圖像文件后,單擊"打開"按鈕,其結(jié)果如圖7.21所示。?

將圖片用其它格式保存?
CImage::Save方法能將一個圖像文件按另一種格式來保存,它的原型如下:

HRESULT Save( LPCTSTR pszFileName, REFGUID guidFileType= GUID_NULL);

其中,pszFileName用來指定一個文件名,guidFileType用來指定要保存的圖像文件格式,當(dāng)為GUID_NULL時,其文件格式由文件的擴展名來決定,這也是該函數(shù)的默認值。它還可以是GUID_BMPFile(BMP文件格式)、GUID_PNGFile(PNG文件格式)、 GUID_JPEGFile(JPEG文件格式)和GUID_GIFFile(GIF文件格式)。?
例如,下面的過程是在Ex_Image示例基礎(chǔ)上進行的,我們在CEx_ImageView類添加ID_FILE_SAVE_AS的COMMAND事件映射程序,并添加下列代碼:

void CEx_ImageView::OnFileSaveAs()?
{?
if (m_Image.IsNull()) {?
MessageBox("你還沒有打開一個要保存的圖像文件!");?
return;?
}?
CString strFilter;?
strFilter = "位圖文件|*.bmp|JPEG 圖像文件|*.jpg| \?
GIF 圖像文件|*.gif|PNG 圖像文件|*.png||";?
CFileDialog dlg(FALSE,NULL,NULL,NULL,strFilter);?
if ( IDOK != dlg.DoModal())?
return;?
// 如果用戶沒有指定文件擴展名,則為其添加一個?
CString strFileName;?
CString strExtension;?
strFileName = dlg.m_ofn.lpstrFile;?
if (dlg.m_ofn.nFileExtension == 0)?
{?
switch (dlg.m_ofn.nFilterIndex)?
{?
case 1:?
strExtension = "bmp"; break;?
case 2:?
strExtension = "jpg"; break;?
case 3:?
strExtension = "gif"; break;?
case 4:?
strExtension = "png"; break;?
default:?
break;?
}?
strFileName = strFileName + '.' + strExtension;?
}?
// 圖像保存?
HRESULT hResult = m_Image.Save(strFileName);?
if (FAILED(hResult))?
MessageBox("保存圖像文件失敗!");

將圖片用其它格式保存?
CImage::Save方法能將一個圖像文件按另一種格式來保存,它的原型如下:

HRESULT Save( LPCTSTR pszFileName, REFGUID guidFileType= GUID_NULL);

其中,pszFileName用來指定一個文件名,guidFileType用來指定要保存的圖像文件格式,當(dāng)為GUID_NULL時,其文件格式由文件的擴展名來決定,這也是該函數(shù)的默認值。它還可以是GUID_BMPFile(BMP文件格式)、GUID_PNGFile(PNG文件格式)、 GUID_JPEGFile(JPEG文件格式)和GUID_GIFFile(GIF文件格式)。?
例如,下面的過程是在Ex_Image示例基礎(chǔ)上進行的,我們在CEx_ImageView類添加ID_FILE_SAVE_AS的COMMAND事件映射程序,并添加下列代碼:
void CEx_ImageView::OnFileSaveAs()?
{?
if (m_Image.IsNull()) {?
MessageBox("你還沒有打開一個要保存的圖像文件!");?
return;?
}?
CString strFilter;?
strFilter = "位圖文件|*.bmp|JPEG 圖像文件|*.jpg| \?
GIF 圖像文件|*.gif|PNG 圖像文件|*.png||";?
CFileDialog dlg(FALSE,NULL,NULL,NULL,strFilter);?
if ( IDOK != dlg.DoModal())?
return;?
// 如果用戶沒有指定文件擴展名,則為其添加一個?
CString strFileName;?
CString strExtension;?
strFileName = dlg.m_ofn.lpstrFile;?
if (dlg.m_ofn.nFileExtension == 0)?
{?
switch (dlg.m_ofn.nFilterIndex)?
{?
case 1:?
strExtension = "bmp"; break;?
case 2:?
strExtension = "jpg"; break;?
case 3:?
strExtension = "gif"; break;?
case 4:?
strExtension = "png"; break;?
default:?
break;?
}?
strFileName = strFileName + '.' + strExtension;?
}?
// 圖像保存?
HRESULT hResult = m_Image.Save(strFileName);?
if (FAILED(hResult))?
MessageBox("保存圖像文件失敗!");?
變成黑白圖片?
由于許多圖像文件使用顏色表來發(fā)揮顯示設(shè)備的色彩顯示能力,因而將一張彩色圖片變成黑色圖片時需要調(diào)用CImage::IsIndexed來判斷是否使用顏色表,若是則修改顏色表,否則直接將像素進行顏色設(shè)置。例如下面的代碼:

void CEx_ImageView::MakeBlackAndwhite(CImage* image)?
{?
if (image->IsNull()) return;?
if (!image->IsIndexed()) {?
// 直接修改像素顏色?
COLORREF pixel;?
int maxY = image->GetHeight(), maxX = image->GetWidth();?
byte r,g,b,avg;?
for (int x=0; x<maxX; x++) {?
for (int y=0; y<maxY; y++) {?
pixel = image->GetPixel(x,y);?
r = GetRValue(pixel);?
g = GetGValue(pixel);?
b = GetBValue(pixel);?
avg = (int)((r + g + b)/3);?
image->SetPixelRGB(x,y,avg,avg,avg);?
}?
}?
} else {?
// 獲取并修改顏色表?
int MaxColors = image->GetMaxColorTableEntries();?
RGBQUAD* ColorTable;?
ColorTable = new RGBQUAD[MaxColors];?
image->GetColorTable(0,MaxColors,ColorTable);?
for (int i=0; i<MaxColors; i++)?
{?
int avg = (ColorTable[i].rgbBlue + ColorTable[i].rgbGreen + ColorTable[i].rgbRed)/3;?
ColorTable[i].rgbBlue = avg;?
ColorTable[i].rgbGreen = avg;?
ColorTable[i].rgbRed = avg;?
}?
image->SetColorTable(0,MaxColors,ColorTable);?
delete(ColorTable);?
}?
}

?

轉(zhuǎn)自:http://hi.baidu.com/cauciee/blog/item/3053490994877438e8248822.html

?

GDI 總結(jié)三: CImage類使用

分類:?圖形圖像處理2011-12-21 09:16 427人閱讀?評論(1)?收藏?舉報

前言

CImage類是基于GDI+的,但是這里為什么要講歸于GDI?

???????? 主要是基于這樣的考慮: 在GDI+環(huán)境中,我們可以直接使用GDI+ ,沒多少必要再使用CImage類

?????????????????????????????????????????????????????? 但是,如果再GDI環(huán)境中,我們要想使用GDI+,有點麻煩,還得加入頭文件,加入啟動GDI+的代碼和關(guān)閉GDI+的代碼,顯得太羅嗦了,GDI? 的CBitmap 處理功能又有局限,只能處理BMP格式的圖片。 怎么辦?這時,我們便可使用CImage類,因為這個類本身封裝了GDI+得使用環(huán)境,所以無需我們手動設(shè)置,簡化了我們的操作。? 同時,又可以利用GDI+中強大的圖片處理功能,及可以簡便的與CBitmap對象進行轉(zhuǎn)換 ,大大方便了在GDI環(huán)境下,進行各種圖片處理工作 。

??????????????????????????????????????????????????????? 其實,將其稱作 GDI/ GDI+ 混合編程,這樣才更確切些。

為什么引入CImage類?

?

??? CBitmap 類只能處理BMP格式的圖片,非常受限。

??? 而CImage可以處理JPGE GIF BMP PNG多種格式圖片,擴展了圖片處理功能 且能與CBitmap 進行轉(zhuǎn)換( 因為所載入的位圖句柄都是HBITMAP,所以可相互轉(zhuǎn)換),因此引入CImage類進行圖像處理

???? CImage?provides enhanced bitmap support, including the ability to load and save images in JPEG, GIF, BMP, and Portable Network Graphics (PNG) formats

CImage類介紹

?

???? CImage是MFC和ATL共享的新類,它能從外部磁盤中調(diào)入一個JPEG、GIF、BMP和PNG格式的圖像文件加以顯示,而且這些文件格式可以相互轉(zhuǎn)換。

???? CImage是VC.NET中定義的一種MFC/ATL共享類,也是ATL的一種工具類,它提供增強型的(DDB和DIB)位圖支持,可以裝入、顯示、轉(zhuǎn)換和保存多種格式的圖像文件,包括BMP、GIF、JPG、PNG、TIF等。CImage是一個獨立的類,沒有基類。(CImage類是基于GDI+的,從VC.NET起引進,VC 6.0中沒有。)

????? ATL(Active Template Library,活動模板庫)是一套基于模板的 C++ 類,用以簡化小而快的 COM 對象的編寫。

為了在MFC程序中使用CImage類,必須包含ATL的圖像頭文件atlimage.h:(在VS08 SP1中不用包含)

???? #include <atlimage.h>

1? 加載位圖文件

?

[cpp]?view plaincopyprint?

  • // CImage可加載的圖片文件有JPG,BMP,TIF.PNG等格式? 而CBitmap只能加載BMP圖片文件
  • if(!PathFileExists(imgFilePath))??
  • return NULL;?
  • CImage nImage;?
  • nImage.Load(imgFilePath);?
  • return nImage.Detach();? //返回HBITMAP??? 可用CBitmap 處理 也可用CImage處理
  • 2 與CBitmap轉(zhuǎn)換

    ?

    ?

    [cpp]?view plaincopyprint?

  • CImage nImage;?
  • nImage.Load(imgFilePath);?
  • HBITMAP hBitmap=nImage.Detach(); // 獲得位圖句柄 用以轉(zhuǎn)換
  • // 轉(zhuǎn)換方式一:
  • CBitmap bmp;?
  • bmp.DeleteObject();?
  • bmp.Attach(hBitmap); //? 轉(zhuǎn)換為CBitmap對象
  • // 轉(zhuǎn)換方式二:
  • CBitmap *pBitmap=CBitmap::FromHandle(nImage.m_hBitmap);?
  • 3 獲得CImage對象的cdc

    [cpp]?view plaincopyprint?

  • CDC *pDC=CDC::FromHandle(nImage.GetDC());?
  • // Use pDC here
  • nImage.ReleaseDC();?
  • 4 顯示位圖

    ?? 思路: 將CImage對象 繪制在對應(yīng)的DC中

    ?? 所使用的函數(shù) BitBlt?? StretchBlt? Draw等

    ?? 以Draw舉例:

    [cpp]?view plaincopyprint?

  • BOOL Draw(?
  • HDC hDestDC,?
  • int xDest,?
  • int yDest,?
  • int nDestWidth,?
  • int nDestHeight,?
  • int xSrc,?
  • int ySrc,?
  • int nSrcWidth,?
  • int nSrcHeight??
  • ) const throw( );?
  • BOOL Draw(?
  • HDC hDestDC,?
  • const RECT& rectDest,?
  • const RECT& rectSrc??
  • ) const throw( );?
  • BOOL Draw(?
  • HDC hDestDC,?
  • int xDest,?
  • int yDest??
  • ) const throw( );?
  • BOOL Draw(?
  • HDC hDestDC,?
  • const POINT& pointDest??
  • ) const throw( );?
  • BOOL Draw(?
  • HDC hDestDC,?
  • int xDest,?
  • int yDest,?
  • int nDestWidth,?
  • int nDestHeight??
  • ) const throw( );?
  • BOOL Draw(?
  • HDC hDestDC,?
  • const RECT& rectDest??
  • ) const throw( );?
  • Draw?performs the same operation as?StretchBlt, unless the image contains a transparent color or alpha channel. In that case,Drawperforms the same operation as eitherTransparentBlt?orAlphaBlend?as required.

    For versions of?Draw?that do not specify a source rectangle, the entire source image is the default. For the version ofDraw?that does not specify a size for the destination rectangle, the size of the source image is the default and no stretching or shrinking occurs.

    EXAMPLE 1:

    ?

    [cpp]?view plaincopyprint?

  • CImage img;?
  • img.Load("1.jpg");?
  • if (!img.IsNull())?
  • {?
  • ??? img.Draw(pDC->m_hDC,CRect(0,0,100,100));?
  • }?
  • EXAMPLE 2: 畫在另一個位圖中

    [cpp]?view plaincopyprint?

  • CImage img;?
  • img.Load(filePath);?
  • // 獲得CImage對象的 CDC
  • HDC hDC=img.GetDC();?
  • CDC *pDC=CDC::FromHandle(hDC);?
  • CBitmap bmp;// 只是創(chuàng)建了位圖對象,但還沒有將位圖對象與位圖資源聯(lián)系起來
  • bmp.CreateCompatibleBitmap(pDC,nWidth,nHeight); // 創(chuàng)建新的位圖資源
  • CDC memDC;?
  • memDC.CreateCompatibleDC(pDC);?
  • CBitmap *pOld=memDC.SelectObject(&bmp);?
  • // 將img圖像繪制到bmp中
  • ::SetStretchBltMode(memDC.m_hDC,HALFTONE);?
  • ::SetBrushOrgEx(memDC.m_hDC,0,0,NULL);?
  • img.StretchBlt(memDC.m_hDC,CRect(0,0,nWidth,nHeight)/*DestRect*/,CRect(0,0,nWidth,nHeight)/*SourceRect*/,SRCCOPY);?
  • HBITMAP hBitmap=(HBITMAP)memDC.SelectObject(pOld->m_hObject); // 獲得新創(chuàng)建的位圖資源句柄
  • img.ReleaseDC();?
  • 5 將位圖資源與對象進行分離

    ?

    [cpp]?view plaincopyprint?

  • inline HBITMAP CImage::Detach() throw()?
  • {?
  • HBITMAP hBitmap;?
  • ??? ATLASSUME( m_hBitmap != NULL );?
  • ??? ATLASSUME( m_hDC == NULL );?
  • ??? hBitmap = m_hBitmap;?
  • ??? m_hBitmap = NULL;?
  • ??? m_pBits = NULL;?
  • ??? m_nWidth = 0;?
  • ??? m_nHeight = 0;?
  • ??? m_nBPP = 0;?
  • ??? m_nPitch = 0;?
  • ??? m_iTransparentColor = -1;?
  • ??? m_bHasAlphaChannel = false;?
  • ??? m_bIsDIBSection = false;?
  • return( hBitmap );?
  • }?
  • 6 釋放資源

    CBitmap 使用DeleteObject()來主動釋放掉位圖資源

    CImage?? 沒有DeleteObject()函數(shù) ,而是用Destroy()函數(shù)來主動釋放位圖資源

    [cpp]?view plaincopyprint?

  • inline void CImage::Destroy() throw()?
  • {?
  • HBITMAP hBitmap;?
  • if( m_hBitmap != NULL )?
  • ??? {?
  • ??????? hBitmap = Detach();?
  • ??????? ::DeleteObject( hBitmap );? //釋放位圖資源
  • ??? }?
  • }?
  • CBitmap 析構(gòu)時,會自動釋放掉所占用的位圖資源

    CImage 析構(gòu)時,也會自動釋放掉所占用的位圖資源

    [cpp]?view plaincopyprint?

  • inline CImage::~CImage() throw()?
  • {?
  • ??? Destroy(); //釋放掉所占用的位圖資源
  • ??? s_initGDIPlus.DecreaseCImageCount();?
  • }?
  • 7 讀寫圖像數(shù)據(jù)

    ?

    主要用到3個函數(shù) :

    ?

    1 )GetBits() 獲得數(shù)據(jù)區(qū)的指針

    ?

    Retrieves a pointer to the actual bit values of a given pixel in a bitmap.

    void* GetBits( ) throw( );

    [cpp]?view plaincopyprint?

  • inline void* CImage::GetBits() throw()?
  • {?
  • ??? ATLASSUME( m_hBitmap != NULL );?
  • ??? ATLASSERT( IsDIBSection() );?
  • return( m_pBits );?
  • }?
  • A pointer to the bitmap buffer. If the bitmap is a bottom-up DIB, the pointer points near the end of the buffer. If the bitmap is a top-down DIB, the pointer points to the first byte of the buffer.

    Using this pointer, along with the value returned by?GetPitch, you can locate and change individual pixels in an image.

    注意: 由GetBits()取得的指針不一定是圖片數(shù)據(jù)的起始行,必須結(jié)合GetPitch()的值來確定起始行位置

    2)GetPitch()

    [cpp]?view plaincopyprint?

  • inline int CImage::GetPitch() const throw()?
  • {?
  • ??? ATLASSUME( m_hBitmap != NULL );?
  • ??? ATLASSERT( IsDIBSection() );?
  • return( m_nPitch );?
  • }?
  • 獲得圖像數(shù)據(jù)每一行的字節(jié)數(shù)

    The pitch of the image. If the return value is negative, the bitmap is a bottom-up DIB and its origin is the lower left corner. If the return value is positive, the bitmap is a top-down DIB and its origin is the upper left corner.

    GetBits 與 GetPitch 關(guān)系:

    當(dāng)GetPitch()<0時,GetBits()獲得的指針指向最后一行

    當(dāng)GetPitch()>0時,GetBits()獲得的指針指向第一行

    圖像數(shù)據(jù)首行地址:

    [cpp]?view plaincopyprint?

  • BYTE *pData=NULL;?
  • if(img.GetPitch()<0)?
  • ??? pData=(BYTE*)img.GetBits()+(img.GetPitch()*(img.GetHeight()-1));?
  • else
  • ??? pData=(BYTE*)img.GetBits();?
  • [cpp]?view plaincopyprint?

  • BYTE *pData=NULL;?
  • if(img.GetPitch()<0)?
  • ??? pData=(BYTE *)img.GetPixelAddress(img.GetHeight()-1,0);?
  • else
  • ??? pData=(BYTE *)img.GetPixelAddress(0,0);?
  • 3)GetBPP() 返回每個像素所占的bit數(shù)

    [cpp]?view plaincopyprint?

  • inline int CImage::GetBPP() const throw()?
  • {?
  • ??? ATLASSUME( m_hBitmap != NULL );?
  • return( m_nBPP );?
  • }?
  • The number of bits per pixel.

    This value determines the number of bits that define each pixel and the maximum number of colors in the bitmap

    一個綜合例子:

    [cpp]?view plaincopyprint?

  • void CMyImage::Negatives(void)?
  • {?
  • int i, j;?
  • //圖像每一行的字節(jié)數(shù)
  • int nRowBytes = GetPitch();?
  • int nWidth = GetWidth();?
  • int nHeight = GetHeight();?
  • //每個像素所占的字節(jié)數(shù)
  • int nClrCount = GetBPP() / 8;?
  • LPBYTE p;?
  • for(int index = 0; index < nClrCount; index++)?
  • ??? {?
  • ??????? p = (LPBYTE)GetBits();?
  • for(i = 0; i < nHeight; i++)?
  • ??????? {?
  • for(j = 0; j < nWidth; j++)?
  • ??????????? {?
  • ??????????????? p[j*nClrCount + index] = 255 - p[j*nClrCount + index];?
  • ??????????? }?
  • //如果nRowBytes>0? 則從開始到結(jié)尾
  • //如果nRowBytes<0, 則從結(jié)尾到開始
  • ??????????? p += nRowBytes;??
  • ??????? }?
  • ??? }?
  • }?
  • 8 保存到圖像文件中

    Saves an image as the specified file name and type.

    HRESULT Save( IStream* pStream, REFGUID guidFileType ) const throw(); HRESULT Save( LPCTSTR pszFileName, REFGUID guidFileType=GUID_NULL )

    [cpp]?view plaincopyprint?

  • inline HRESULT CImage::Save( LPCTSTR pszFileName, REFGUID guidFileType ) const throw()?
  • {?
  • if( !InitGDIPlus() )?
  • ??? {?
  • return( E_FAIL );?
  • ??? }?
  • UINT nEncoders;?
  • UINT nBytes;?
  • ??? Gdiplus::Status status;?
  • ??? status = Gdiplus::GetImageEncodersSize( &nEncoders, &nBytes );?
  • if( status != Gdiplus::Ok )?
  • ??? {?
  • return( E_FAIL );?
  • ??? }?
  • ??? USES_CONVERSION_EX;?
  • ??? Gdiplus::ImageCodecInfo* pEncoders = static_cast< Gdiplus::ImageCodecInfo* >( _ATL_SAFE_ALLOCA(nBytes, _ATL_SAFE_ALLOCA_DEF_THRESHOLD) );?
  • if( pEncoders == NULL )?
  • return E_OUTOFMEMORY;?
  • ??? status = Gdiplus::GetImageEncoders( nEncoders, nBytes, pEncoders );?
  • if( status != Gdiplus::Ok )?
  • ??? {?
  • return( E_FAIL );?
  • ??? }?
  • ??? CLSID clsidEncoder = CLSID_NULL;?
  • if( guidFileType == GUID_NULL )?
  • ??? {?
  • // Determine clsid from extension
  • ??????? clsidEncoder = FindCodecForExtension( ::PathFindExtension( pszFileName ), pEncoders, nEncoders );?
  • ??? }?
  • else
  • ??? {?
  • // Determine clsid from file type
  • ??????? clsidEncoder = FindCodecForFileType( guidFileType, pEncoders, nEncoders );?
  • ??? }?
  • if( clsidEncoder == CLSID_NULL )?
  • ??? {?
  • return( E_FAIL );?
  • ??? }?
  • LPCWSTR pwszFileName = T2CW_EX( pszFileName, _ATL_SAFE_ALLOCA_DEF_THRESHOLD );?
  • #ifndef _UNICODE
  • if( pwszFileName == NULL )?
  • return E_OUTOFMEMORY;?
  • #endif // _UNICODE
  • if( m_bHasAlphaChannel )?
  • ??? {?
  • ??????? ATLASSUME( m_nBPP == 32 );?
  • ??????? Gdiplus::Bitmap bm( m_nWidth, m_nHeight, m_nPitch, PixelFormat32bppARGB, static_cast< BYTE* >( m_pBits ) );?
  • ??????? status = bm.Save( pwszFileName, &clsidEncoder, NULL );?
  • if( status != Gdiplus::Ok )?
  • ??????? {?
  • return( E_FAIL );?
  • ??????? }?
  • ??? }?
  • else
  • ??? {?
  • ??????? Gdiplus::Bitmap bm( m_hBitmap, NULL );?
  • ??????? status = bm.Save( pwszFileName, &clsidEncoder, NULL );?
  • if( status != Gdiplus::Ok )?
  • ??????? {?
  • return( E_FAIL );?
  • ??????? }?
  • ??? }?
  • return( S_OK );?
  • }?
  • pStream

    A pointer to a stream containing the file name for the image.

    pszFileName

    A pointer to the file name for the image.

    guidFileType

    The file type to save the image as. Can be one of the following:

    • ImageFormatBMP?? An uncompressed bitmap image.

    • ImageFormatPNG?? A Portable Network Graphic (PNG) compressed image.

    • ImageFormatJPEG?? A JPEG compressed image.

    • ImageFormatGIF?? A GIF compressed image.

    Call this function to save the image using a specified name and type. If the guidFileType parameter is not included, the file name's file extension will be used to determine the image format. If no extension is provided, the image will be saved in BMP format.

    MSDN例子:

    [cpp]?view plaincopyprint?

  • ? Copy Code??
  • // Demonstrating saving various file formats
  • int _tmain(int argc, _TCHAR* argv[])?
  • {?
  • ?? CImage myimage;?
  • // load existing image
  • ?? myimage.Load("image.bmp");??
  • // save an image in BMP format
  • ?? myimage.Save("c:\image1.bmp");?
  • // save an image in BMP format
  • ?? myimage.Save("c:\image2",ImageFormatBMP);?
  • // save an image in JPEG format
  • ?? myimage.Save("c:\image3.jpg");?
  • // save an image in BMP format, even though jpg file extension is used
  • ?? myimage.Save("c:\image4.jpg",ImageFormatBMP);?
  • return 0;?
  • }?
  • 9 應(yīng)用實例: 將兩個圖像合并為一個新的圖像

    ?

    [cpp]?view plaincopyprint?

  • //圖像路徑
  • CString img1Path;?
  • CString img2Path;?
  • CString img3Path;?
  • img1Path=_T("1.bmp");?
  • img2Path=_T("2.bmp");?
  • img3Path=_T("3.bmp");? // 將 圖片1、2 合并成圖片3
  • CImage img1,img2,img3;?
  • img1.Load(img1Path);?
  • img2.Load(img2Path);?
  • CBitmap bmp;?
  • CDC memDC;?
  • HDC hDC=NULL;?
  • CDC *pDC=NULL;?
  • CBitmap *pOld=NULL;?
  • HBITMAP hBitmap=NULL;?
  • //創(chuàng)建位圖
  • hDC=img1.GetDC();?
  • pDC=CDC::FromHandle(hDC);?
  • bmp.DeleteObject();?
  • bmp.CreateCompatibleBitmap(pDC,img1.GetWidth()/2,img1.GetHeight());?
  • memDC.DeleteDC();?
  • memDC.CreateCompatibleDC(pDC);?
  • pOld=memDC.SelectObject(&bmp);?
  • ::SetStretchBltMode(memDC.m_hDC,HALFTONE);?
  • ::SetBrushOrgEx(memDC.m_hDC,0,0,NULL);?
  • // 背景置白色
  • CRgn rectRgn;?
  • rectRgn.CreateRectRgn(0,0,img1.GetWidth()/2,img1.GetHeight());?
  • CBrush brush;?
  • brush.CreateSolidBrush(RGB(255,255,255));?
  • memDC.FillRgn(&rectRgn,&brush);?
  • //畫圖
  • img1.StretchBlt(memDC.m_hDC,CRect(0,0,img1.GetWidth()/2,img1.GetHeight()/2),CRect(0,0,img1.GetWidth(),img1.GetHeight()),SRCCOPY);?
  • img2.StretchBlt(memDC.m_hDC,CRect(0,img1.GetHeight()/2,img1.GetWidth()/2,img1.GetHeight()),CRect(0,0,img2.GetWidth(),img2.GetHeight()),SRCCOPY);?
  • hBitmap=(HBITMAP)memDC.SelectObject(pOld->m_hObject);?
  • img3.Attach(hBitmap);// 載入位圖資源
  • img3.Save(img3Path); // 保存新的位圖
  • img1.ReleaseDC();?
  • img1.Destroy();?
  • img2.Destroy();?
  • img3.Destroy();?
  • 轉(zhuǎn)載于:https://www.cnblogs.com/songtzu/archive/2013/01/03/2843400.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    人人天天夜夜 | 五月天伊人 | 久久久久久久久久久久久久电影 | 国产视频亚洲 | 免费在线观看不卡av | 麻花豆传媒mv在线观看 | 园产精品久久久久久久7电影 | 国产最新91| 亚洲国产精品一区二区尤物区 | 亚洲精品影视在线观看 | 国产专区在线视频 | 日本在线观看黄色 | 亚洲精品乱码久久久一二三 | 久久久精品午夜 | 色综合久久久久综合体桃花网 | 在线观看亚洲国产精品 | 九九色综合 | 成人网在线免费视频 | 亚洲另类视频在线 | 精品自拍网 | 五月在线视频 | 日韩精品一区二区在线视频 | 日本中文字幕在线视频 | 天堂va在线高清一区 | 91在线免费视频观看 | 国产精品久久久久久久久岛 | 国产福利免费在线观看 | 精品久久久久久久久久岛国gif | 久久久久亚洲精品成人网小说 | 久久精品www人人爽人人 | 精品免费一区二区三区 | 91精品视频在线免费观看 | 欧美日韩中文在线视频 | 精品一二三四五区 | 亚洲精品午夜久久久 | 操操综合 | 欧美精品乱码99久久影院 | 五月婷婷在线综合 | 精品国产一区二区三区久久 | 久久久久久综合网天天 | 国内精品久久久久久 | 久久免费精品一区二区三区 | 毛片网在线观看 | 欧美日韩网址 | 激情五月av | 国产丝袜美腿在线 | 深夜免费小视频 | 黄色av电影网 | 91最新视频在线观看 | 国产黄在线看 | 69久久久久久久 | 免费a级观看| 99精品国产一区二区三区麻豆 | 日韩中文字| 青青草视频精品 | 99久久国产免费看 | 一级α片| 日本黄色一级电影 | 97色se| 精品无人国产偷自产在线 | 亚洲精品在线二区 | 国产精品久久久久一区二区三区 | 91伊人影院 | 视频二区在线视频 | 国产亚洲婷婷免费 | 毛片在线网| 欧美在线观看禁18 | 99在线精品免费视频九九视 | 国产一区网址 | www日韩欧美 | 国产综合久久 | 天天做天天射 | 黄色精品一区 | 亚洲精品视频在线观看网站 | 欧美激情视频一二区 | 国产不卡视频在线 | 国产三级国产精品国产专区50 | 天天操天天操天天操 | 麻豆小视频在线观看 | 一区二区三区中文字幕在线观看 | 国产高清免费在线播放 | 丁香婷婷在线观看 | 国产精品中文字幕在线 | 久久免费成人网 | 午夜精品一区二区三区视频免费看 | 91视频这里只有精品 | 久久综合久久综合久久综合 | 国产在线成人 | 一本到在线 | 国产精品毛片一区二区在线看 | 欧美二区在线播放 | 日本91在线| 国产成人综合精品 | 日韩欧美成 | 成人福利在线播放 | 午夜色性片 | 综合五月 | 天天爽天天射 | 天天曰夜夜操 | 婷婷福利影院 | 国产精品免费在线播放 | 国产精品久久久久免费观看 | 日日夜夜精品免费 | 亚洲精品五月天 | 亚洲人人精品 | 91精品视频一区 | 成人亚洲免费 | 日韩综合一区二区三区 | 久久在现视频 | 婷婷色中文 | 超碰97中文 | 麻豆一二 | 高清一区二区 | 亚洲1区在线 | 六月丁香激情综合 | 国产精品免费久久久 | 国产一区二区高清不卡 | 国产精品视频不卡 | 色偷偷中文字幕 | 久久亚洲综合色 | 97国产大学生情侣白嫩酒店 | 超碰在线免费福利 | 久久国产精品一区二区 | 日韩mv欧美mv国产精品 | 国产精久久 | 欧美日韩精品在线观看视频 | 五月天婷婷免费视频 | 99久热在线精品视频成人一区 | 免费福利在线播放 | 欧美激情视频一二区 | 国产亚洲91 | 成人免费在线播放 | 亚洲精品视频免费 | 亚洲视频综合在线 | 精品久久久久久久 | 91精品在线播放 | 91精品免费| 午夜影视av | www.久久爱.cn | 欧美极品一区二区三区 | 91禁在线观看 | 色狠狠综合天天综合综合 | 99婷婷狠狠成为人免费视频 | 在线观看视频你懂得 | 久久99国产精品免费 | 蜜桃av观看 | 91在线视频在线观看 | 国产精品久久久久久a | 亚洲乱码精品久久久久 | 国产精品丝袜久久久久久久不卡 | 欧美在线1 | 99久久精品国产一区二区三区 | 在线看片中文字幕 | 日韩av网页 | 日韩在线视频播放 | 欧美最猛性xxxxx免费 | 免费午夜网站 | 69国产成人综合久久精品欧美 | 99久久超碰中文字幕伊人 | 久草在线资源观看 | 国产精品免费久久久 | 成年人在线观看免费视频 | 成 人 黄 色视频免费播放 | 亚洲 综合 精品 | 91福利视频网站 | 精品国产电影一区二区 | 狠狠久久伊人 | 蜜臀av性久久久久av蜜臀三区 | 国产在线综合视频 | 亚洲视频axxx | 91手机电视 | 成人羞羞视频在线观看免费 | 国产呻吟在线 | 91探花在线 | 欧美精品九九99久久 | 一区二区欧美在线观看 | 国产又粗又猛又色又黄网站 | 亚洲精选视频免费看 | 亚洲高清视频在线观看 | 99热.com | 天堂av影院| 天天操人人要 | 99久久精品国产一区二区三区 | 亚洲 成人 欧美 | 亚洲人毛片 | 中文字幕的 | 91传媒在线观看 | 日韩免费小视频 | 中文亚洲欧美日韩 | 国产精品一二 | 午夜精品福利一区二区三区蜜桃 | 字幕网资源站中文字幕 | 91黄色影视 | 91丨九色丨勾搭 | 在线a亚洲视频播放在线观看 | 日韩视频一区二区三区在线播放免费观看 | 午夜精品久久久99热福利 | 日韩精品在线观看视频 | 亚洲人视频在线 | 国产高清久久 | av福利资源 | 欧美一级性生活 | 国产欧美日韩视频 | 黄色在线观看网站 | 四虎成人精品永久免费av | 欧美最猛性xxxx| 高清不卡一区二区三区 | 91社区国产高清 | 天天舔天天射天天操 | 区一区二区三区中文字幕 | 狠狠操狠狠插 | 免费观看福利视频 | 911免费视频| 亚洲成人高清在线 | 日韩精品久久中文字幕 | 狠狠躁夜夜av | 婷婷精品 | 精品国内| 国产精品久久久久久五月尺 | 日韩欧美视频免费在线观看 | 国产伦理久久 | 91精品视频网站 | 久久免费福利视频 | 中文字幕成人在线观看 | 黄色免费网站 | 亚洲国产成人久久 | 婷婷电影在线观看 | 久久艹久久 | 久久久久久久免费看 | 久草热久草视频 | 黄色av免费看 | 精品久久一级片 | 激情视频区 | 国产精品久久久久久久毛片 | 久久国产精品久久国产精品 | 免费成人在线视频网站 | 日韩电影中文字幕在线 | 中国一级特黄毛片大片久久 | av在线电影网站 | 最近字幕在线观看第一季 | 国产99久久久精品 | 国产精品九九视频 | 国产人成看黄久久久久久久久 | 国际精品久久久久 | 黄色毛片一级片 | 日韩av影视在线观看 | 免费开视频 | 日本黄色大片免费看 | 超碰97免费观看 | 国产精品久久久久久久久久ktv | 美女视频一区 | 四虎在线观看视频 | 在线视频久 | 97超碰精品 | 中文字幕在线观看一区 | 日韩精品一区二区在线观看 | 在线视频欧美精品 | 色操插| 91精品一区国产高清在线gif | 久草在线手机观看 | 欧美日本在线视频 | 一级大片在线观看 | 制服丝袜一区二区 | 久久精品站| 色婷婷久久一区二区 | 中文字幕视频 | 在线视频观看国产 | 在线观看亚洲国产 | 九九久久久久久久久激情 | 欧美日本啪啪无遮挡网站 | 99久久精品免费看国产一区二区三区 | www.国产在线视频 | 日韩久久久久久久久久久久 | 91香蕉视频污在线 | 国产青草视频在线观看 | 激情开心网站 | 日韩在线免费看 | 国产二区电影 | 国产色综合天天综合网 | 国产在线精品福利 | 99久久精品无免国产免费 | 成年人免费观看在线视频 | 免费高清在线视频一区· | 成人夜晚看av | 国产专区在线播放 | 成人免费网站视频 | 国产亚洲成人网 | 亚洲色图27p | 亚洲黄色av网址 | 国产精品亚洲综合久久 | 日日操日日插 | 亚洲成熟女人毛片在线 | 久久精品欧美视频 | 国产一区二区手机在线观看 | 欧美一级在线看 | 亚洲精品一区二区三区高潮 | 久草久草在线观看 | 成人h视频在线 | 九九热精品视频在线播放 | 久久久国际精品 | 九九久久久久久久久激情 | 国偷自产中文字幕亚洲手机在线 | 成人欧美在线 | 精品99在线观看 | 欧美激情精品久久久 | 久久亚洲欧美 | 欧美 日韩 成人 | 综合国产视频 | 亚洲午夜小视频 | 国产一二区视频 | 黄色av免费电影 | 天天天操操操 | 久久天天综合网 | 免费在线观看成人小视频 | 国产综合久久 | 91在线观看视频 | 精品国产1区二区 | 久久精品成人欧美大片古装 | 一级黄网| 欧美一区日韩一区 | 久草91视频 | 日日夜夜天天干 | 欧美视频一区二 | 欧美国产一区在线 | 欧洲一区精品 | 中文久草 | 成人av.com | 91在线播放综合 | 亚洲区色| 欧美亚洲国产一卡 | 天天摸日日摸人人看 | 免费黄a大片 | 丝袜美腿在线视频 | 亚洲免费av一区二区 | 亚洲午夜精品福利 | 国产小视频在线免费观看视频 | 久久精品亚洲国产 | 伊人午夜| 久久免费av | 国产99久久九九精品免费 | 国产精品一级在线 | 四虎在线观看视频 | 天天综合天天综合 | 日韩一区二区三 | 日韩欧美高清一区二区 | 爱色av.com | 天堂网一区二区三区 | 人人玩人人添人人澡97 | 成人午夜毛片 | 精品久久1 | 国产永久免费观看 | 精品一二三四在线 | 视频国产在线观看18 | 天天射综合网视频 | 亚洲一二区视频 | 国产一级电影在线 | 久久精品女人毛片国产 | 久久五月网 | 日韩欧美精品免费 | 91九色视频观看 | 激情综合五月婷婷 | 青青草久草在线 | 福利片免费看 | 不卡av在线免费观看 | 91视频亚洲| 日本韩国精品一区二区在线观看 | 亚洲精品一区二区三区在线观看 | 国产日韩欧美在线观看视频 | 精品国产一区二区三区不卡 | 日韩av图片 | 色天天 | 国产探花在线看 | 97视频免费| 国产精品久久久久久久久久尿 | 波多野结衣一区三区 | 蜜臀aⅴ国产精品久久久国产 | 91香蕉视频色版 | 国产精品毛片久久久久久 | 久草电影在线观看 | 国产精品www | 天天色成人网 | 91免费看黄 | 国产v在线观看 | 欧美成人h版在线观看 | 国产亚洲视频中文字幕视频 | 久久成 | 五月婷婷激情 | 国产一区二区在线免费 | 午夜久久福利影院 | 高清精品在线 | 国产精品av免费 | 911精品视频 | 国产乱对白刺激视频不卡 | 国产黄色成人av | 日日日视频 | 97成人精品 | 黄色亚洲免费 | 久久久久久久av | 狠狠操欧美 | 激情视频综合网 | 久久xxxx| 日韩xxx视频| 成人免费影院 | aaa免费毛片| 人人超在线公开视频 | 午夜久久福利 | 日韩在线观看中文字幕 | av在线一级 | 中文字幕av免费观看 | 国产精品久久久久影视 | 日韩理论视频 | 日本中文字幕一二区观 | 久久涩视频 | 亚洲一区欧美精品 | 日韩精品中文字幕在线不卡尤物 | 欧美成人一区二区 | 91超国产| 天天综合网 天天综合色 | 黄色大片中国 | 国产精品二区三区 | 中文字幕高清av | a√国产免费a| 成人免费在线播放视频 | 久久精品国产一区二区三区 | 久久草在线免费 | 国产一级三级 | 一区二区三区中文字幕在线观看 | 中文字幕在线精品 | 91在线看视频免费 | 久久综合国产伦精品免费 | 日韩欧美国产视频 | 青草视频在线 | 九九热.com| 视频在线一区二区三区 | www.91av在线| 高清av网 | 美女黄频免费 | 亚洲精品自在在线观看 | 亚洲精品乱码久久久久v最新版 | 91看成人 | 日韩理论| 99在线免费观看 | 伊香蕉大综综综合久久啪 | 一级性生活片 | 中文字幕色网站 | 免费a v网站 | 天天色天天操综合网 | 亚洲国产精品一区二区尤物区 | av一级久久 | 久久九精品 | 天天干人人干 | 九九免费在线观看视频 | 欧美a级在线 | 日本久久不卡视频 | 日韩视频免费 | 久久久人 | 91九色蝌蚪视频在线 | 奇米影视在线99精品 | 九九欧美 | 日韩视频免费观看高清 | 丝袜美腿在线 | 国产精品www | 天天操天天怕 | 久久久久久久久久网站 | 久久激情电影 | 欧美韩国在线 | 亚洲精品免费在线播放 | 日韩av在线网站 | 亚洲精品大片www | 日韩精品亚洲专区在线观看 | 五月婷婷伊人网 | 天天操狠狠操 | 国产精品不卡在线播放 | 人人插人人艹 | 一性一交视频 | 国产精品日韩久久久久 | 日韩电影中文 | 国产精品入口66mio女同 | 激情久久网 | 国产精品一区二区白浆 | 欧美黑人xxxx猛性大交 | 国产免费观看久久黄 | 日韩免费av在线 | 国产aaa毛片| 成人午夜黄色 | 超碰在线91 | 色婷婷丁香 | 五月天中文字幕 | 国产精品久久久久久模特 | 日本三级中文字幕在线观看 | 66av99精品福利视频在线 | 97视频在线播放 | www.色午夜 | 欧美日韩一级在线 | 午夜视频在线观看欧美 | 亚洲黄色三级 | 国产色网站 | 超碰九九| 日韩高清国产精品 | 日本久久中文字幕 | 99久久久国产精品美女 | 国产特级毛片aaaaaa毛片 | 久久99精品国产91久久来源 | 国产一级黄大片 | 日韩a免费 | 亚洲在线日韩 | 国产精品麻豆99久久久久久 | 国产日本在线观看 | 亚洲成人av在线电影 | 天天干,夜夜操 | 五月婷婷国产 | 国产精品一区二 | av片在线观看 | 成人在线视频在线观看 | 国内外成人在线 | 国产精品一区二区三区四区在线观看 | 99草视频在线观看 | 操天天操 | 欧美人牲| 日韩在线精品 | 成人精品视频久久久久 | 午夜色性片 | 欧美日韩高清在线一区 | 天天射天天操天天干 | aaa毛片视频 | 激情伊人五月天久久综合 | 天天天干天天天操 | 日本特黄一级 | 日三级在线 | 久久久久国产a免费观看rela | 极品嫩模被强到高潮呻吟91 | 黄av免费| 国产在线a不卡 | 一区二区欧美在线观看 | 免费看黄在线 | 久久99热精品这里久久精品 | 国产精品原创在线 | 国产精品国产毛片 | av免费黄色| 丁香六月激情婷婷 | 国产玖玖在线 | h动漫中文字幕 | 西西www4444大胆在线 | 亚洲国产操 | 国产在线免费观看 | 亚洲天堂精品视频 | 高潮久久久久久久久 | 亚洲乱码在线观看 | 亚洲天堂自拍视频 | 国产精品第2页 | 日韩特黄一级欧美毛片特黄 | 国产一级片观看 | 狠狠狠狠狠狠狠 | 不卡的av在线播放 | 日韩免费三级 | av免费播放| 日韩av片免费在线观看 | 激情中文在线 | 99久久精品一区二区成人 | 久99精品 | 免费高清在线视频一区· | 久久都是精品 | 中文字幕在线电影 | 亚洲最新视频在线播放 | 亚洲专区在线播放 | 欧美精品少妇xxxxx喷水 | 亚洲精品免费在线视频 | av片免费播放 | 久久国产精品久久久久 | 国产成人精品免费在线观看 | 99中文视频在线 | 天操夜夜操 | 日韩亚洲在线观看 | 黄色h在线观看 | 亚洲国产欧美在线人成大黄瓜 | 亚洲免费在线观看视频 | 久久国产精品一二三区 | 国产成a人亚洲精v品在线观看 | 亚洲国产日韩一区 | 精品人人爽 | 国产成人亚洲在线观看 | 美女福利视频 | 国产成人一级电影 | 亚洲自拍av在线 | 69欧美视频 | 99国内精品 | 午夜视频在线瓜伦 | 91热视频在线观看 | 天天操网站 | 天天干天天干天天干天天干天天干天天干 | 美女国产免费 | 国产一区二区在线精品 | 国产精品99久久免费黑人 | 亚洲黄色a | 一级一片免费视频 | 丁香婷婷深情五月亚洲 | av电影在线观看 | 欧美日韩精品免费观看 | 在线视频区 | 亚洲成人网在线 | 欧美日韩高清一区二区 | 久久久国产毛片 | 在线黄色观看 | a电影免费看| 欧美国产日韩一区 | 一级黄色大片在线观看 | 国产在线观看xxx | 99人久久精品视频最新地址 | 日日干激情五月 | 国产精品成人一区二区三区吃奶 | 免费精品国产 | 国产一级二级在线播放 | 色在线最新 | 国内精品久久影院 | 欧美精品久久久久久久久久久 | 日韩大陆欧美高清视频区 | 伊人永久在线 | 成人黄色一级视频 | 国产一区二区三区视频在线 | 一区二区三区中文字幕在线观看 | 久久免费看片 | 国产一区二区高清不卡 | 欧美日韩视频在线观看一区二区 | 国产一区二区在线免费播放 | 超碰在线人人爱 | 日韩电影中文 | 91av在| 日日碰狠狠躁久久躁综合网 | 最近日本中文字幕 | 射综合网 | 免费一级黄色 | 99精品免费久久久久久日本 | 国产一区视频在线播放 | 在线精品在线 | 在线免费观看视频你懂的 | 午夜丰满寂寞少妇精品 | 久草在线资源观看 | 不卡视频国产 | 在线观看爱爱视频 | av在线成人 | 亚洲精品一区二区在线观看 | 91色影院 | 日韩黄色大片在线观看 | 黄色网址a | 欧美日韩一区二区三区不卡 | 婷婷天天色 | wwwwww黄| 在线成人性视频 | 精品国产乱码久久 | 在线涩涩| 亚洲小视频在线 | 国产人成看黄久久久久久久久 | 小草av在线播放 | 亚洲性少妇性猛交wwww乱大交 | 成人免费观看视频网站 | 久久久久久久久久久久影院 | 午夜精品久久久久久久99婷婷 | 久久精品久久综合 | 一区二区三区久久 | 欧美在线视频一区二区三区 | 国产中的精品av小宝探花 | 又黄又爽的视频在线观看网站 | 九九热免费在线视频 | 一区二区三区福利 | 韩日精品中文字幕 | 九七人人干 | 黄av免费 | 亚洲精品成人网 | 亚洲黄色小说网址 | 日韩三级视频在线看 | 在线色吧 | 婷婷激情久久 | 欧美一区免费观看 | 色偷偷av男人天堂 | 欧美极度另类性三渗透 | 亚洲精品国产麻豆 | 免费观看一级成人毛片 | 麻豆国产精品永久免费视频 | 亚洲国产精选 | 九九视频在线观看视频6 | 最近免费在线观看 | 日韩中文在线字幕 | 午夜久久| 日日夜夜网 | 日日夜夜人人天天 | 久久一区二区三区超碰国产精品 | a爱爱视频 | 国产免费观看高清完整版 | 美女av在线免费 | 天天干夜夜| 国产男女无遮挡猛进猛出在线观看 | av国产网站 | 久草视频在线播放 | 国产精品破处视频 | 国产丝袜一区二区三区 | 中文字幕一区二区三区在线观看 | 欧美日韩国产一区二区三区 | 91亚洲欧美 | 亚洲精品九九 | 精品国内自产拍在线观看视频 | 综合网天天射 | 亚洲日韩中文字幕在线播放 | 99精品国自产在线 | 97中文字幕| 国产精品不卡 | 丝袜美腿在线视频 | 久久国产电影 | 亚洲一区免费在线 | 国产一区欧美一区 | 一区中文字幕 | 天堂资源在线观看视频 | 欧美一级久久久久 | 一级黄色片在线观看 | 91精品一区二区三区久久久久久 | 一区中文字幕电影 | 丁香av| 亚洲经典视频 | 91av视频在线观看 | www.天天干 | 日韩精品免费在线观看视频 | 91精品无人成人www | 一本一本久久aa综合精品 | 久久久久亚洲国产精品 | 一区二区伦理 | 在线直播av| 狠狠色伊人亚洲综合网站野外 | 东方av免费在线观看 | 九九免费视频 | 国产69精品久久久久99 | 国产中的精品av小宝探花 | 日本高清中文字幕有码在线 | 九九九九精品九九九九 | 最近中文字幕免费av | 999超碰 | 久久国产影视 | www.天天射 | 亚色视频在线观看 | 九九九九九精品 | 天天综合在线观看 | 91丨九色丨丝袜 | 精品一区二区在线免费观看 | 久久99九九99精品 | www..com黄色片| 成年人视频在线免费观看 | 国产精品视频在线观看 | 国产精品日韩欧美 | 欧美analxxxx| 久久久不卡影院 | 精品麻豆入口免费 | 最近高清中文字幕在线国语5 | 久久久久久久久久亚洲精品 | 国内精品一区二区 | 狠狠躁日日躁狂躁夜夜躁av | 亚洲精品18日本一区app | 亚洲精品乱码白浆高清久久久久久 | 九热在线 | 深夜福利视频一区二区 | 人人爽人人爽人人片av | 麻豆视频免费版 | 日韩免费观看一区二区 | 亚洲3级| 精品一区中文字幕 | 天天色棕合合合合合合 | 国产成人av网址 | 99精品国产在热久久 | 国产精品美女网站 | 日本在线观看一区 | 婷婷丁香激情 | av女优中文字幕在线观看 | 亚洲激情精品 | 久久久免费看 | 91在线免费看片 | 在线 欧美 日韩 | 国产一级91 | 欧美色精品天天在线观看视频 | 人人舔人人射 | 综合网天天色 | 99久久er热在这里只有精品66 | 夜夜操天天 | 91福利国产在线观看 | 日韩av一卡二卡三卡 | 国产亚洲欧美一区 | 欧美一区二区在线看 | 天天干com| 国产精品一区在线播放 | 婷婷丁香久久五月婷婷 | 天天干人人干 | 亚洲性少妇性猛交wwww乱大交 | www.神马久久 | 高清日韩一区二区 | 一区av在线播放 | 婷婷在线观看视频 | 欧美人zozo | 韩日电影在线免费看 | 久久精品一区二区 | 涩涩网站在线看 | 久久久久久高清 | 99久久国产免费,99久久国产免费大片 | 一级一片免费观看 | 午夜精品一区二区三区免费视频 | 麻豆你懂的 | 又黄又刺激又爽的视频 | 久久久久久久久久福利 | 99视频这里有精品 | 色播五月婷婷 | 亚洲精品久久久久久久不卡四虎 | 夜夜骑日日 | 亚洲视频2 | 久av在线| 久久国产精品视频观看 | 天天色 天天 | 手机看国产毛片 | 波多在线视频 | 黄色在线网站噜噜噜 | 免费毛片一区二区三区久久久 | 狠狠色丁香久久婷婷综合五月 | 国产丝袜制服在线 | 欧美日韩精品影院 | 免费观看久久久 | 免费黄色在线网址 | 一级黄色a视频 | 亚洲手机天堂 | 99久久99久久精品免费 | 激情动态 | 亚洲一级电影在线观看 | www.看片网站| 黄色网大全| 久久久国产一区二区三区四区小说 | 97成人在线视频 | 国产大尺度视频 | 亚洲免费av观看 | 久久a级片 | 99久久精品国产亚洲 | 成人黄色大片在线观看 | 狠狠gao | 极品久久久 | 久久全国免费视频 | 97国产精品亚洲精品 | 制服丝袜亚洲 | 综合网天天色 | 亚洲网站在线看 | 日日夜夜草| 97视频在线观看免费 | 天天天天射 | 婷婷六月综合网 | 日日夜夜精品免费观看 | 亚洲狠狠干 | 99国产精品久久久久久久久久 | 国产欧美久久久精品影院 | 久久久久国产成人免费精品免费 | 久草在线视频首页 | 美女黄濒 | 久久中文字幕视频 | 99视频免费| 69精品在线观看 | 99在线观看 | 在线观看免费国产小视频 | 国产精品午夜在线 | 97国产大学生情侣酒店的特点 | av片一区二区 | 1024手机看片国产 | 国产黄色片免费在线观看 | 欧美日韩不卡一区二区 | 成人91在线观看 | 成 人 黄 色 片 在线播放 | 97综合在线 | 一级久久精品 | 18岁免费看片 | 国产在线观看二区 | 91香蕉嫩草| 国外成人在线视频网站 | 日日天天| 中文字幕在线观看av | av一本久道久久波多野结衣 | 一区二区三区在线不卡 | 日日骑 | 97精品视频在线播放 | 免费能看的av | 国产毛片久久 | 九九热精品视频在线播放 | 亚洲va在线va天堂va偷拍 | 久草香蕉在线视频 | 日本久久久久 | 国产资源在线视频 | 一区二区三区日韩在线观看 | 欧美视频在线观看免费网址 | 日本精品视频免费 | 亚洲精品网站在线 | 69精品在线 | 国产成人61精品免费看片 | 九色视频自拍 | av大全在线观看 | 日韩av免费一区 | 伊人久久av| 久久久久久久国产精品影院 | 国产一二区在线观看 | 欧美先锋影音 | 欧美久久影院 | 久久免费在线 | a在线v| 精品国产一区二区三区在线 | 成人av教育| 欧美精品一区二区在线播放 | 最近日本字幕mv免费观看在线 | 精久久久久 | 国内毛片毛片 | 欧美日韩不卡在线 | 欧美孕妇视频 | 午夜视频二区 | 国产粉嫩在线观看 | 日本中文一区二区 | 6699私人影院| 欧美日韩在线播放 | 在线观看视频黄 | 国产无吗一区二区三区在线欢 | 午夜av不卡 | 日韩在线观看视频免费 | 最新av免费 | 国产成人91 | 国产小视频网站 | 欧美成人一区二区 | 午夜精品一区二区三区视频免费看 | 亚洲国产欧美在线人成大黄瓜 | 日韩欧美高清免费 | 成人欧美日韩国产 | 亚洲日本精品 | 开心激情婷婷 | 激情视频久久 | 人人天天夜夜 | 黄色aaa毛片| 碰碰影院| 婷婷综合 | 人成免费网站 | 久久久麻豆| 97香蕉超级碰碰久久免费软件 | 毛片美女网站 | 久久久久久免费 | 日韩精品电影在线播放 | 99精品免费在线观看 | 久久久亚洲麻豆日韩精品一区三区 | 午夜丁香视频在线观看 | 亚州av网站 | 亚洲精品字幕在线 | 久久成人精品电影 | 91精品国自产在线 | 国产精品av在线 | 超碰在线公开免费 | 久久免费视频在线观看30 | 久久免费的精品国产v∧ | 男女免费av| 黄色三级av| 免费看一级特黄a大片 | 狠狠色丁香久久婷婷综合丁香 | 97国产在线 | 日韩理论片中文字幕 | 欧美日韩成人 | 在线观看一区视频 | 亚洲不卡av一区二区三区 | 久久久久欧美精品 | 欧美精品在线观看 | 欧美调教网站 | 国产在线观看高清视频 | 国产精品美女久久久久久久 | 一区二区视频在线免费观看 | 日本精品久久久久 | 美女黄频在线观看 | 美女免费网视频 | 美女视频黄是免费的 | 天天爽天天爽 | 在线看一级片 | 成人国产网址 | 91成人免费观看视频 | 欧美在线一二 | 中文免费| av三区在线| 特级西西人体444是什么意思 | 国产精品久久久久一区二区三区共 | 99色在线播放 | 操操操综合 | 九九热视频在线播放 | 91精品国产99久久久久 | 日韩a级黄色 | 97在线观 | 亚洲欧美婷婷六月色综合 | 日日干天天插 | 91亚洲永久精品 | h文在线观看免费 | 国内一级片在线观看 | 中文在线www | 在线观看一级视频 | 中文字幕免费观看 | 四虎成人精品永久免费av | 在线观看国产永久免费视频 | 久草在线最新视频 | av高清一区二区三区 | 国产精品中文在线 | 欧美在线18 | 午夜精品一区二区三区在线播放 |