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

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

?? gifapi.cpp

?? vc++數字圖像處理 ,是一本很不錯的介紹數字圖像方面的書籍,這里有本書的全部源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// ************************************************************************//  文件名:GIFAPI.cpp////  GIF(Graphics Interchange Format) API函數庫:////  DIBToGIF()          - 將指定的DIB對象(< 256色)保存為GIF文件//  EncodeGIF_LZW()		- 對指定圖像進行GIF_LZW編碼//  GIF_LZW_WriteCode() - 輸出一個編碼//  ReadGIF()           - 讀取GIF文件//  DecodeGIF_LZW()     - 對GIF_LZW編碼結果進行解碼//  ReadSrcData()       - 讀取GIF_LZW編碼//// ************************************************************************#include "stdafx.h"#include "DIBAPI.h"#include "GIFAPI.h"#include <io.h>#include <errno.h>#include <math.h>#include <direct.h>/************************************************************************* * * 函數名稱: *   DIBToGIF() * * 參數: *   LPSTR lpDIB        - 指向DIB對象的指針 *   CFile& file        - 要保存的文件 *   BOOL	bInterlace	- 是否按照交錯方式保存 * * 返回值: *   BOOL               - 成功返回True,否則返回False。 * * 說明: *   該函數將指定的DIB對象(< 256色)保存為GIF文件。 * *************************************************************************/BOOL WINAPI DIBToGIF(LPSTR lpDIB, CFile& file, BOOL bInterlace){	// 循環變量	WORD	i;	WORD	j;		// DIB高度	WORD	wHeight;		// DIB寬度	WORD	wWidth;		// 指向DIB象素指針	LPSTR   lpDIBBits;		// GIF文件頭	GIFHEADER          GIFH;		// GIF邏輯屏幕描述塊	GIFSCRDESC         GIFS;		// GIF圖像描述塊	GIFIMAGE           GIFI;		// GIF編碼參數	GIFC_VAR           GIFCVar;		// 顏色數目	WORD               wColors;		// 每行字節數	WORD               wWidthBytes;		// 調色板	BYTE               byGIF_Pal[768];		// 字節變量	BYTE               byChar;		// 指向BITMAPINFO結構的指針(Win3.0)	LPBITMAPINFO	   lpbmi;		// 指向BITMAPCOREINFO結構的指針	LPBITMAPCOREINFO   lpbmc;		// 表明是否是Win3.0 DIB的標記	BOOL			   bWinStyleDIB;		// 獲取DIB高度	wHeight = (WORD) DIBHeight(lpDIB);		// 獲取DIB寬度	wWidth  = (WORD) DIBWidth(lpDIB);		// 找到DIB圖像象素起始位置	lpDIBBits = FindDIBBits(lpDIB);		// 給GIFCVar結構賦值	GIFCVar.wWidth     = wWidth;	GIFCVar.wDepth     = wHeight;	GIFCVar.wBits      = DIBBitCount(lpDIB);	GIFCVar.wLineBytes = (WORD)BYTE_WBYTES((DWORD)GIFCVar.wWidth *										   (DWORD)GIFCVar.wBits);		// 計算每行字節數	wWidthBytes = (WORD)DWORD_WBYTES(wWidth * (DWORD)GIFCVar.wBits);		// 計算顏色數目	wColors     = 1 << GIFCVar.wBits;		// 獲取指向BITMAPINFO結構的指針(Win3.0)	lpbmi = (LPBITMAPINFO)lpDIB;		// 獲取指向BITMAPCOREINFO結構的指針	lpbmc = (LPBITMAPCOREINFO)lpDIB;		// 判斷是否是WIN3.0的DIB	bWinStyleDIB = IS_WIN30_DIB(lpDIB);		// 給調色板賦值	if (bWinStyleDIB)	{		j = 0;		for (i = 0; i < wColors; i++)		{			// 讀取紅色分量			byGIF_Pal[j++] = lpbmi->bmiColors[i].rgbRed;						// 讀取綠色分量			byGIF_Pal[j++] = lpbmi->bmiColors[i].rgbGreen;						// 讀取藍色分量			byGIF_Pal[j++] = lpbmi->bmiColors[i].rgbBlue;		}	}	else	{		j = 0;		for (i = 0; i < wColors; i++)		{			// 讀取紅色分量			byGIF_Pal[j++] = lpbmc->bmciColors[i].rgbtRed;						// 讀取綠色分量			byGIF_Pal[j++] = lpbmc->bmciColors[i].rgbtGreen;						// 讀取紅色分量			byGIF_Pal[j++] = lpbmc->bmciColors[i].rgbtBlue;		}	}		////////////////////////////////////////////////////////////////////////////////////////	// 開始寫GIF文件		// 寫GIF文件頭	GIFH.bySignature[0] = 'G';	GIFH.bySignature[1] = 'I';	GIFH.bySignature[2] = 'F';	GIFH.byVersion[0]='8';	GIFH.byVersion[1]='9';	GIFH.byVersion[2]='a';	file.Write((LPSTR)&GIFH, 6);		// 寫GIF邏輯屏幕描述塊	GIFS.wWidth               = GIFCVar.wWidth;	GIFS.wDepth               = GIFCVar.wDepth;	GIFS.GlobalFlag.PalBits   = (BYTE)(GIFCVar.wBits - 1);	GIFS.GlobalFlag.SortFlag  = 0x00;	GIFS.GlobalFlag.ColorRes  = (BYTE)(GIFCVar.wBits - 1);	GIFS.GlobalFlag.GlobalPal = 0x01;	GIFS.byBackground         = 0x00;	GIFS.byAspect             = 0x00;	file.Write((LPSTR)&GIFS, 7);		// 寫GIF全局調色板	file.Write((LPSTR)byGIF_Pal,(wColors*3));		// 寫GIF圖像描述間隔符	byChar      = 0x2C;	file.Write((LPSTR)&byChar,1);		// 寫GIF圖像描述塊	GIFI.wLeft                = 0;	GIFI.wTop                 = 0;	GIFI.wWidth               = GIFCVar.wWidth;	GIFI.wDepth               = GIFCVar.wDepth;	GIFI.LocalFlag.PalBits    = 0x00;	GIFI.LocalFlag.Reserved   = 0x00;	GIFI.LocalFlag.SortFlag   = 0x00;	GIFI.LocalFlag.Interlace  = (BYTE)(bInterlace ? 0x01 : 0x00);	GIFI.LocalFlag.LocalPal   = 0x00;	file.Write((LPSTR)&GIFI, 9);		// 寫GIF圖像壓縮數據	HANDLE hSrcBuff = GlobalAlloc(GHND,(DWORD)MAX_BUFF_SIZE);	GIFCVar.lpDataBuff = (LPSTR)GlobalLock(hSrcBuff);	GIFCVar.lpEndBuff  = GIFCVar.lpDataBuff;	GIFCVar.dwTempCode = 0UL;	GIFCVar.wByteCnt   = 0;	GIFCVar.wBlockNdx  = 1;	GIFCVar.byLeftBits = 0x00;		// 進行GIF_LZW編碼	EncodeGIF_LZW(lpDIBBits, file, &GIFCVar,wWidthBytes, bInterlace);		// 判斷是否編碼成功	if (GIFCVar.wByteCnt)	{		// 寫入文件		file.Write(GIFCVar.lpDataBuff, GIFCVar.wByteCnt);	}		// 釋放內存	GlobalUnlock(hSrcBuff);	GlobalFree(hSrcBuff);		// 寫GIF Block Terminator	byChar   = 0x00;	file.Write((LPSTR)&byChar,1);		// 寫GIF文件結尾塊	byChar   = 0x3B;	file.Write((LPSTR)&byChar,1);		// 返回	return TRUE;}/************************************************************************* * * 函數名稱: *   EncodeGIF_LZW() * * 參數: *   LPSTR lpDIBBits		- 指向源DIB圖像指針 *   CFile& file			- 要保存的文件 *   LPGIFC_VAR lpGIFCVar	- 指向GIFC_VAR結構的指針 *	 WORD wWidthBytes		- 每行圖像字節數 *	 BOOL bInterlace		- 是否按照交錯方式保存 * * 返回值: *   無 * * 說明: *   該函數對指定圖像進行GIF_LZW編碼。 * *************************************************************************/void WINAPI EncodeGIF_LZW(LPSTR lpDIBBits, CFile& file, 						  LPGIFC_VAR lpGIFCVar,WORD wWidthBytes, BOOL bInterlace){	// 內存分配句柄	HANDLE hTableNdx;	HANDLE hPrefix;	HANDLE hSuffix;		// 指向字串表指針	LPWORD lpwTableNdx;		// 用于字串表搜索的索引	LPWORD lpwPrefix;	LPBYTE lpbySuffix;		// 指向當前編碼像素的指針	LPSTR  lpImage;		// 計算當前數據圖像的偏移量	DWORD  dwDataNdx;		// LZW_CLEAR	WORD   wLZW_CLEAR;		// LZW_EOI	WORD   wLZW_EOI;		// LZW_MinCodeLen	BYTE   byLZW_MinCodeLen;		// 字串表索引	WORD   wPreTableNdx;	WORD   wNowTableNdx;	WORD   wTopTableNdx;		// 哈希表索引	WORD   wHashNdx;	WORD   wHashGap;	WORD   wPrefix;	WORD   wShiftBits;		// 當前圖像的行數	WORD   wRowNum;		WORD   wWidthCnt;		// 循環變量	WORD   wi;	WORD   wj;		// 交錯方式存儲時每次增加的行數	WORD   wIncTable[5]  = { 8,8,4,2,0 }; 		// 交錯方式存儲時起始行數	WORD   wBgnTable[5]  = { 0,4,2,1,0 }; 		BOOL   bStart;	BYTE   bySuffix;	BYTE   bySubBlock[256];	BYTE   byCurrentBits;	BYTE   byMask;	BYTE   byChar;	BYTE   byPass;		// 臨時字節變量	BYTE   byTemp;		// 給字串表分配內存	hTableNdx        = GlobalAlloc(GHND,(DWORD)(MAX_HASH_SIZE<<1));	hPrefix          = GlobalAlloc(GHND,(DWORD)(MAX_HASH_SIZE<<1));	hSuffix          = GlobalAlloc(GHND,(DWORD)MAX_HASH_SIZE);		// 鎖定內存	lpwTableNdx      = (LPWORD)GlobalLock(hTableNdx);	lpwPrefix        = (LPWORD)GlobalLock(hPrefix);	lpbySuffix       = (LPBYTE)GlobalLock(hSuffix);		// 計算LZW_MinCodeLen	byLZW_MinCodeLen = (BYTE)((lpGIFCVar->wBits>1) ? lpGIFCVar->wBits : 0x02);		// 寫GIF LZW最小代碼大小	file.Write((LPSTR)&byLZW_MinCodeLen,1);		wRowNum          = 0;	bStart           = TRUE;	byPass           = 0x00;		// 計算LZW_CLEAR	wLZW_CLEAR       = 1 << byLZW_MinCodeLen;		// 計算LZW_EOI	wLZW_EOI         = wLZW_CLEAR + 1;		// 初始化字串表	byCurrentBits    = byLZW_MinCodeLen + (BYTE)0x01;	wNowTableNdx     = wLZW_CLEAR + 2;	wTopTableNdx     = 1 << byCurrentBits;	for(wi=0; wi<MAX_HASH_SIZE; wi++)	{		// 初始化為0xFFFF		*(lpwTableNdx+wi) = 0xFFFF;	}		// 輸出LZW_CLEAR	GIF_LZW_WriteCode(file, wLZW_CLEAR, (LPSTR)bySubBlock,					  &byCurrentBits, lpGIFCVar);		// 逐行編碼	for(wi=0; wi<lpGIFCVar->wDepth; wi++)	{		// 計算當前偏移量		dwDataNdx  = (DWORD)(lpGIFCVar->wDepth - 1 - wRowNum) * (DWORD)wWidthBytes;				// 指向當前行圖像的指針		lpImage    = (LPSTR) (((BYTE*)lpDIBBits) + dwDataNdx);				wWidthCnt  = 0;		wShiftBits = 8 - lpGIFCVar->wBits;		byMask     = (BYTE)((lpGIFCVar->wBits==1) ? 0x80 : 0xF0);				if (bStart)		{			// 判斷是否是256色位圖(一個像素一字節)			if (lpGIFCVar->wBits==8)			{				// 256色,直接賦值即可				byTemp      = *lpImage++;			}			else			{				// 非256色,需要移位獲取像素值				wShiftBits  = 8 - lpGIFCVar->wBits;				byMask      = (BYTE)((lpGIFCVar->wBits==1) ? 0x80 : 0xF0);				byTemp      = (BYTE)((*lpImage & byMask) >> wShiftBits);				byMask    >>= lpGIFCVar->wBits;				wShiftBits -= lpGIFCVar->wBits;			}			wPrefix    = (WORD)byTemp;			bStart     = FALSE;			wWidthCnt ++;		}				// 每行編碼		while(wWidthCnt < lpGIFCVar->wWidth)		{			// 判斷是否是256色位圖(一個像素一字節)			if (lpGIFCVar->wBits==8)			{				// 256色,直接賦值即可				byTemp = *lpImage++;			}			else			{				// 非256色,需要移位獲取像素值				byChar = *lpImage;				byTemp = (BYTE)((byChar & byMask) >> wShiftBits);				if (wShiftBits)				{					byMask    >>= lpGIFCVar->wBits;					wShiftBits -= lpGIFCVar->wBits;				}				else				{					wShiftBits  = 8 - lpGIFCVar->wBits;					byMask      = (BYTE)((lpGIFCVar->wBits==1) ? 0x80 : 0xF0);					lpImage    ++;				}			}			bySuffix   = byTemp;			wWidthCnt ++;						// 查找當前字符串是否存在于字串表中			wHashNdx = wPrefix ^ ((WORD)bySuffix << 4);			wHashGap = (wHashNdx ? (MAX_HASH_SIZE - wHashNdx) : 1);						// 判斷當前字符串是否在字串表中			while(TRUE)			{				// 當前字符串不在字串表中				if (*(lpwTableNdx + wHashNdx) == 0xFFFF)				{				   // 新字符串,退出循環				   break;				}								// 判斷是否找到該字符串				if ((*(lpwPrefix+wHashNdx)  == wPrefix) &&					(*(lpbySuffix+wHashNdx) == bySuffix))				{					// 找到,退出循環					break;				}								// 第二哈希表				if (wHashNdx < wHashGap)				{					wHashNdx += MAX_HASH_SIZE;				}				wHashNdx -= wHashGap;			}						// 判斷是否是新字符串			if (*(lpwTableNdx+wHashNdx) != 0xFFFF)			{				// 不是新字符串				wPrefix = *(lpwTableNdx + wHashNdx);			 }			 else			 {				// 新字符串								// 輸出該編碼				GIF_LZW_WriteCode(file,wPrefix,(LPSTR)bySubBlock,								   &byCurrentBits,lpGIFCVar);								// 將該新字符串添加到字串表中				wPreTableNdx = wNowTableNdx;								// 判斷是否達到最大字串表大小				if (wNowTableNdx < MAX_TABLE_SIZE)				{					*(lpwTableNdx+wHashNdx) = wNowTableNdx++;					*(lpwPrefix+wHashNdx)   = wPrefix;					*(lpbySuffix+wHashNdx)  = bySuffix;				}								if (wPreTableNdx == wTopTableNdx)				{					if (byCurrentBits<12)					{						byCurrentBits ++;						wTopTableNdx <<= 1;					}					else					{						// 字串表到達最大長度												// 輸出LZW_CLEAR						GIF_LZW_WriteCode(file, wLZW_CLEAR, (LPSTR)bySubBlock,										 &byCurrentBits,lpGIFCVar);												// 重新初始化字串表						byCurrentBits    = byLZW_MinCodeLen + (BYTE)0x01;						wLZW_CLEAR       = 1 << byLZW_MinCodeLen;						wLZW_EOI         = wLZW_CLEAR + 1;						wNowTableNdx     = wLZW_CLEAR + 2;						wTopTableNdx     = 1 << byCurrentBits;						for(wj=0;wj<MAX_HASH_SIZE;wj++)						{							// 初始化為0xFFFF							*(lpwTableNdx+wj) = 0xFFFF;						}					}				}				wPrefix = (WORD)bySuffix;			}		}				// 判斷是否是交錯方式		if (bInterlace)		{			// 交錯方式,計算下一行位置			wRowNum += wIncTable[byPass];			if (wRowNum>=lpGIFCVar->wDepth)			{				byPass ++;				wRowNum = wBgnTable[byPass];			}		}		else		{			// 非交錯方式,直接將行數加一即可			wRowNum ++;		}	}		// 輸出當前編碼	GIF_LZW_WriteCode(file, wPrefix, (LPSTR)bySubBlock,					  &byCurrentBits,lpGIFCVar);		// 輸出LZW_EOI	GIF_LZW_WriteCode(file,wLZW_EOI,(LPSTR)bySubBlock,					  &byCurrentBits,lpGIFCVar);		if (lpGIFCVar->byLeftBits)	{		// 加入該字符		bySubBlock[lpGIFCVar->wBlockNdx++] = (BYTE)lpGIFCVar->dwTempCode;				// 判斷是否超出MAX_SUBBLOCK_SIZE		if (lpGIFCVar->wBlockNdx > MAX_SUBBLOCK_SIZE)		{			// 判斷wByteCnt + 256是否超過MAX_BUFF_SIZE			if ((lpGIFCVar->wByteCnt + 256) >= MAX_BUFF_SIZE)			{				// 輸出				file.Write(lpGIFCVar->lpDataBuff,							  lpGIFCVar->wByteCnt);				lpGIFCVar->lpEndBuff = lpGIFCVar->lpDataBuff;				lpGIFCVar->wByteCnt  = 0;			}			bySubBlock[0]           = (BYTE)(lpGIFCVar->wBlockNdx - 1);			memcpy(lpGIFCVar->lpEndBuff,(LPSTR)bySubBlock,lpGIFCVar->wBlockNdx);			lpGIFCVar->lpEndBuff   += lpGIFCVar->wBlockNdx;			lpGIFCVar->wByteCnt    += lpGIFCVar->wBlockNdx;			lpGIFCVar->wBlockNdx    = 1;		}		lpGIFCVar->dwTempCode = 0UL;		lpGIFCVar->byLeftBits = 0x00;	}	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩在线| 一区二区三区在线观看视频| 免费人成精品欧美精品| 欧美浪妇xxxx高跟鞋交| 亚洲成人激情社区| 91精品国产综合久久婷婷香蕉 | 欧美国产日韩a欧美在线观看| 国模无码大尺度一区二区三区 | 中文字幕 久热精品 视频在线| 国产精品伊人色| 国产精品乱人伦中文| 99视频精品全部免费在线| 夜夜嗨av一区二区三区| 欧美日韩一区二区三区高清| 日本女人一区二区三区| 久久综合久久鬼色| 99精品欧美一区二区蜜桃免费 | 亚洲欧洲av在线| 欧美亚洲丝袜传媒另类| 日产国产高清一区二区三区| 久久综合九色综合久久久精品综合 | 欧美精品 国产精品| 久久精品国产精品亚洲精品 | 99精品国产99久久久久久白柏| 国产欧美中文在线| 色诱视频网站一区| 午夜精品视频一区| 亚洲国产精品成人综合| 日本久久电影网| 久久国产精品第一页| 亚洲老司机在线| 日韩区在线观看| 9色porny自拍视频一区二区| 性做久久久久久| 欧美va亚洲va在线观看蝴蝶网| 丁香一区二区三区| 视频一区中文字幕国产| 欧美国产视频在线| 91精品国产欧美一区二区| 成人高清视频免费观看| 免费在线看一区| 亚洲蜜臀av乱码久久精品| 日韩欧美aaaaaa| 欧美探花视频资源| www.99精品| 激情综合网最新| 亚洲精选免费视频| 国产欧美综合在线观看第十页| 欧美欧美午夜aⅴ在线观看| 国产91富婆露脸刺激对白| 日韩电影在线观看一区| 亚洲欧美激情小说另类| 国产亚洲精品超碰| 日韩欧美aaaaaa| 3751色影院一区二区三区| 91小宝寻花一区二区三区| 美女精品自拍一二三四| 亚洲国产一区二区在线播放| 国产欧美一区二区精品婷婷| 欧美日韩国产精品成人| 在线日韩国产精品| 色综合色综合色综合色综合色综合| 国产精品一卡二卡| 激情综合色综合久久综合| 视频一区欧美精品| 午夜精品久久久久久久久久久 | 日韩精品久久理论片| 玉米视频成人免费看| 国产精品美女久久久久久久久| 欧美r级在线观看| 在线不卡免费欧美| 欧美色倩网站大全免费| 在线亚洲免费视频| 欧美午夜理伦三级在线观看| 色悠悠久久综合| 色哟哟精品一区| 91欧美一区二区| 色系网站成人免费| 日本道色综合久久| 91黄色激情网站| 欧洲一区二区av| 欧美伊人久久久久久久久影院| 色av一区二区| 色偷偷久久人人79超碰人人澡 | 国产xxx精品视频大全| 国产一区二区三区日韩| 国产麻豆精品在线观看| 国产一区二区三区观看| 国产乱淫av一区二区三区| 国产乱一区二区| av在线不卡网| 在线免费不卡视频| 欧美日韩高清一区二区不卡| 9191精品国产综合久久久久久| 91精品国产一区二区三区| 日韩欧美视频一区| 久久久亚洲精华液精华液精华液| 国产三级欧美三级日产三级99| 国产亚洲污的网站| 国产精品美女视频| 午夜欧美在线一二页| 看片网站欧美日韩| 成人aa视频在线观看| 欧美性感一区二区三区| 日韩免费高清av| 国产精品私人影院| 一区二区三区精品在线观看| 天堂影院一区二区| 国产美女久久久久| 在线免费观看日韩欧美| 日韩欧美国产综合| 欧美国产日韩一二三区| 亚洲福利视频导航| 国产精品影视网| 欧美日韩一区成人| 日本一区二区动态图| 亚洲高清免费观看| 国产成人99久久亚洲综合精品| 色综合视频一区二区三区高清| 欧美一级黄色大片| 国产精品少妇自拍| 日本aⅴ精品一区二区三区| 国产一区二区三区四| 欧美日韩免费观看一区二区三区| 久久综合久久鬼色中文字| 一区二区三区在线影院| 国产麻豆精品一区二区| 欧美日韩国产综合视频在线观看| 精品国产区一区| 亚洲一级在线观看| 国产成人精品1024| 欧美精品欧美精品系列| 国产精品狼人久久影院观看方式| 五月天久久比比资源色| www.在线欧美| 26uuu国产在线精品一区二区| 亚洲精品日韩一| 国产一区高清在线| 欧美日韩国产小视频在线观看| 国产女人aaa级久久久级 | 99久精品国产| 久久影院视频免费| 日韩国产一区二| 色综合天天综合给合国产| 久久综合色之久久综合| 亚洲18女电影在线观看| 成人一区二区三区视频 | 青青草视频一区| 精品视频全国免费看| 亚洲欧美日本在线| 国产东北露脸精品视频| 精品精品国产高清一毛片一天堂| 亚洲大片精品永久免费| 99久久综合狠狠综合久久| 久久久久青草大香线综合精品| 日韩av一区二区三区| 6080午夜不卡| 亚洲福利视频一区二区| 色8久久人人97超碰香蕉987| 日本一区二区免费在线观看视频 | 国产日韩亚洲欧美综合| 精品一二三四区| 欧美成人一区二区| 久久国产日韩欧美精品| 欧美精品色综合| 亚洲午夜精品一区二区三区他趣| jiyouzz国产精品久久| 日韩视频在线永久播放| 蜜臀99久久精品久久久久久软件 | 免费在线看成人av| 欧美人体做爰大胆视频| 亚洲乱码中文字幕综合| 国产成人精品午夜视频免费 | 国产成人免费视频网站| 91精品国产麻豆| 亚洲高清免费观看| 欧美日韩综合不卡| 亚洲午夜日本在线观看| 色婷婷久久99综合精品jk白丝| 国产亚洲精品bt天堂精选| 国产精品性做久久久久久| 精品人在线二区三区| 国产一区二区三区高清播放| 日韩女同互慰一区二区| 日韩电影一二三区| 精品国产91乱码一区二区三区| 日韩av网站在线观看| 欧美一级在线观看| 一区二区视频免费在线观看| 欧美丝袜自拍制服另类| 亚洲综合色丁香婷婷六月图片| 91在线porny国产在线看| 午夜天堂影视香蕉久久| 777久久久精品| 日本欧美一区二区| 精品黑人一区二区三区久久| 国产精品资源在线| 亚洲国产精华液网站w| 91在线国产福利| 亚洲国产精品久久一线不卡|