精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS下的圖片處理與性能優化

移動開發
本文針對多媒體數據的一種———圖片,介紹下圖片的常見格式,它們如何在移動平臺上被傳輸、存儲和展示,以及優化圖片顯示性能的一種方法:強制子線程解碼。

移動開發中我們經常和多媒體數據打交道,對這些數據的解析往往需要耗費大量資源,屬于常見的性能瓶頸。

本文針對多媒體數據的一種———圖片,介紹下圖片的常見格式,它們如何在移動平臺上被傳輸、存儲和展示,以及優化圖片顯示性能的一種方法:強制子線程解碼。

圖片在計算機世界中怎樣被存儲和表示?

圖片和其他所有資源一樣,在內存中本質上都是0和1的二進制數據,計算機需要將這些原始內容渲染成人眼能觀察的圖片,反過來,也需要將圖片以合適的形式保存在存儲器或者在網絡上傳送。

下面是一張圖片在硬盤中的原始十六進制表示:

 

這種將圖片以某種規則進行二進制編碼的方式,就是圖片的格式。

常見的圖片格式

圖片的格式有很多種,除了我們熟知的 JPG、PNG、GIF,還有Webp,BMP,TIFF,CDR 等等幾十種,用于不同的場景或平臺。

 

這些格式可以分為兩大類:有損壓縮和無損壓縮。

有損壓縮:相較于顏色,人眼對光線亮度信息更為敏感,基于此,通過合并圖片中的顏色信息,保留亮度信息,可以在盡量不影響圖片觀感的前提下減少存儲體積。顧名思義,這樣壓縮后的圖片將會永久損失一些細節。最典型的有損壓縮格式是 jpg。

 

無損壓縮:和有損壓縮不同,無損壓縮不會損失圖片細節。它降低圖片體積的方式是通過索引,對圖片中不同的顏色特征建立索引表,減少了重復的顏色數據,從而達到壓縮的效果。常見的無損壓縮格式是 png,gif。

除了上述提到的格式,有必要再簡單介紹下 webp 和 bitmap這兩種格式:

Webp:jpg 作為主流的網絡圖片標準可以向上追溯到九十年代初期,已經十分古老了。所以谷歌公司推出了Webp標準意圖替代陳舊的jpg,以加快網絡圖片的加載速度,提高圖片壓縮質量。

webp 同時支持有損和無損兩種壓縮方式,壓縮率也很高,無損壓縮后的 webp 比 png 少了45%的體積,相同質量的 webp 和 jpg,前者也能節省一半的流量。同時 webp 還支持動圖,可謂圖片壓縮格式的集大成者。

 

webp 的缺點是瀏覽器和移動端支持還不是很完善,我們需要引入谷歌的 libwebp 框架,編解碼也會消耗相對更多的資源。

bitmap:bitmap 又叫位圖文件,它是一種*非壓縮*的圖片格式,所以體積非常大。所謂的非壓縮,就是圖片每個像素的原始信息在存儲器中依次排列,一張典型的1920*1080像素的 bitmap 圖片,每個像素由 RGBA 四個字節表示顏色,那么它的體積就是 1920 * 1080 * 4 = 1012.5kb。

由于 bitmap 簡單順序存儲圖片的像素信息,它可以不經過解碼就直接被渲染到 UI 上。實際上,其它格式的圖片一般都需要先被首先解碼為 bitmap,然后才能渲染到界面上。

如何判斷圖片的格式?

在一些場景中,我們需要手動去判斷圖片數據的格式,以進行不同的處理。一般來說,只要拿到原始的二進制數據,根據不同壓縮格式的編碼特征,就可以進行簡單的分類了。以下是一些圖片框架的常用實現,可以復制使用:

 

  1. + (XRImageFormat)imageFormatForImageData:(nullable NSData *)data { 
  2.  
  3.  
  4.     if (!data) { 
  5.         return XRImageFormatUndefined; 
  6.     } 
  7.      
  8.     uint8_t c; 
  9.     [data getBytes:&c length:1]; 
  10.     switch (c) { 
  11.         case 0xFF: 
  12.             return XRImageFormatJPEG; 
  13.         case 0x89: 
  14.             return XRImageFormatPNG; 
  15.         case 0x47: 
  16.             return XRImageFormatGIF; 
  17.         case 0x49: 
  18.         case 0x4D: 
  19.             return XRImageFormatTIFF; 
  20.         case 0x52: 
  21.  
  22.             if (data.length < 12) { 
  23.                 return XRImageFormatUndefined; 
  24.             } 
  25.              
  26.             NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 
  27.             if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 
  28.                 return XRImageFormatWebP; 
  29.             } 
  30.     } 
  31.     return XRImageFormatUndefined; 

UIImageView 的性能瓶頸

如上文所說,大部分格式的圖片,都需要被首先解碼為bitmap,然后才能渲染到UI上。

UIImageView 顯示圖片,也有類似的過程。實際上,一張圖片從在文件系統中,到被顯示到 UIImageView,會經歷以下幾個步驟:

  1. 分配內存緩沖區和其它資源。
  2. 從磁盤拷貝數據到內核緩沖區
  3. 從內核緩沖區復制數據到用戶空間
  4. 生成UIImageView,把圖像數據賦值給UIImageView
  5. 將壓縮的圖片數據,解碼為位圖數據(bitmap),如果數據沒有字節對齊,Core Animation會再拷貝一份數據,進行字節對齊。
  6. CATransaction捕獲到UIImageView layer樹的變化,主線程Runloop提交CATransaction,開始進行圖像渲染
  7. GPU處理位圖數據,進行渲染。

由于 UIKit 的封裝性,這些細節不會直接對開發者展示。實際上,當我們調用[UIImage imageNamed:@"xxx"]后,UIImage 中存儲的是未解碼的圖片,而調用 [UIImageView setImage:image]后,會在主線程進行圖片的解碼工作并且將圖片顯示到 UI 上,這時候,UIImage 中存儲的是解碼后的 bitmap 數據。

而圖片的解壓縮是一個非常消耗 CPU 資源的工作,如果我們有大量的圖片需要展示到列表中,將會大大拖慢系統的響應速度,降低運行幀率。這就是 UIImageView 的一個性能瓶頸。

解決性能瓶頸:強制解碼

如果 UIImage 中存儲的是已經解碼后的數據,速度就會快很多,所以優化的思路就是:在子線程中對圖片原始數據進行強制解碼,再將解碼后的圖片拋回主線程繼續使用,從而提高主線程的響應速度。

我們需要使用的工具是 Core Graphics 框架的 CGBitmapContextCreate 方法和相關的繪制函數??傮w的步驟是:

  • A. 創建一個指定大小和格式的 bitmap context。
  • B. 將未解碼圖片寫入到這個 context 中,這個過程包含了*強制解碼*。
  • C. 從這個 context 中創建新的 UIImage 對象,返回。

下面是 SDWebImage 實現的核心代碼,編號對應的解析在下文中:

 

  1. // 1. 
  2. CGImageRef imageRef = image.CGImage; 
  3.  
  4. // 2. 
  5. CGColorSpaceRef colorspaceRef = [UIImage colorSpaceForImageRef:imageRef]; 
  6.          
  7. size_t width = CGImageGetWidth(imageRef); 
  8. size_t height = CGImageGetHeight(imageRef); 
  9.  
  10. // 3. 
  11. size_t bytesPerRow = 4 * width; 
  12.  
  13. // 4. 
  14. CGContextRef context = CGBitmapContextCreate(NULL
  15.                                              width, 
  16.                                              height, 
  17.                                              kBitsPerComponent, 
  18.                                              bytesPerRow, 
  19.                                              colorspaceRef, 
  20.                                              kCGBitmapByteOrderDefault|kCGImageAlphaNoneSkipLast); 
  21. if (context == NULL) { 
  22.     return image; 
  23.          
  24. // 5. 
  25. CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef); 
  26.  
  27. // 6. 
  28. CGImageRef newImageRef = CGBitmapContextCreateImage(context); 
  29.  
  30. // 7. 
  31. UIImage *newImage = [UIImage imageWithCGImage:newImageRef 
  32.                                         scale:image.scale 
  33.                                   orientation:image.imageOrientation]; 
  34.  
  35. CGContextRelease(context); 
  36. CGImageRelease(newImageRef); 
  37.  
  38. return newImage; 

對上述代碼的解析:

1、從 UIImage 對象中獲取 CGImageRef 的引用。這兩個結構是蘋果在不同層級上對圖片的表示方式,UIImage 屬于 UIKit,是 UI 層級圖片的抽象,用于圖片的展示;CGImageRef 是 QuartzCore 中的一個結構體指針,用C語言編寫,用來創建像素位圖,可以通過操作存儲的像素位來編輯圖片。這兩種結構可以方便的互轉:

 

  1. // CGImageRef 轉換成 UIImage 
  2. CGImageRef imageRef = CGBitmapContextCreateImage(context); 
  3. UIImage *image = [UIImage imageWithCGImage:imageRef]; 
  4.   
  5. // UIImage 轉換成 CGImageRef 
  6. UIImage *image=[UIImage imageNamed:@"xxx"]; 
  7. CGImageRef imageRef=loadImage.CGImage; 

2、調用 UIImage 的 +colorSpaceForImageRef: 方法來獲取原始圖片的顏色空間參數。

什么叫顏色空間呢,就是對相同顏色數值的解釋方式,比如說一個像素的數據是(FF0000FF),在 RGBA 顏色空間中,會被解釋為紅色,而在 BGRA 顏色空間中,則會被解釋為藍色。所以我們需要提取出這個參數,保證解碼前后的圖片顏色空間一致。

 

CoreGraphic中支持的顏色空間類型:

 

3、計算圖片解碼后每行需要的比特數,由兩個參數相乘得到:每行的像素數 width,和存儲一個像素需要的比特數4。

這里的4,其實是由每張圖片的像素格式和像素組合來決定的,下表是蘋果平臺支持的像素組合方式。

 

表中的bpp,表示每個像素需要多少位;bpc表示顏色的每個分量,需要多少位。具體的解釋方式,可以看下面這張圖:

 

我們解碼后的圖片,默認采用 kCGImageAlphaNoneSkipLast RGB 的像素組合,沒有 alpha 通道,每個像素32位4個字節,前三個字節代表紅綠藍三個通道,最后一個字節廢棄不被解釋。

4、最關鍵的函數:調用 CGBitmapContextCreate() 方法,生成一個空白的圖片繪制上下文,我們傳入了上述的一些參數,指定了圖片的大小、顏色空間、像素排列等等屬性。

5、調用 CGContextDrawImage() 方法,將未解碼的 imageRef 指針內容,寫入到我們創建的上下文中,這個步驟,完成了隱式的解碼工作。

6、從 context 上下文中創建一個新的 imageRef,這是解碼后的圖片了。

7、從 imageRef 生成供UI層使用的 UIImage 對象,同時指定圖片的 scale 和orientation 兩個參數。

scale 指的是圖片被渲染時需要被壓縮的倍數,為什么會存在這個參數呢,因為蘋果為了節省安裝包體積,允許開發者為同一張圖片上傳不同分辨率的版本,也就是我們熟悉的@2x,@3x后綴圖片。不同屏幕素質的設備,會獲取到對應的資源。為了繪制圖片時統一,這些圖片會被set自己的scale屬性,比如@2x圖片,scale 值就是2,雖然和1x圖片的繪制寬高一樣,但是實際的長是width * scale。

orientation 很好理解,就是圖片的旋轉屬性,告訴設備,以哪個方向作為圖片的默認方向來渲染。

通過以上的步驟,我們成功在子線程中對圖片進行了強制轉碼,回調給主線程使用,從而大大提高了圖片的渲染效率。這也是現在主流 App 和大量三方庫的最佳實踐。

總結

總結一下本文內容:

  • 圖片在計算機世界中被按照不同的封裝格式進行壓縮,以便存儲和傳輸。
  • 手機會在主線程中將壓縮的圖片解壓為可以進行渲染的位圖格式,這個過程會消耗大量資源,影響App性能。
  • 我們使用 Core Graphics 的繪制方法,強制在子線程中先對 UIImage 進行轉碼工作,減少主線程的負擔,從而提升App的響應速度。

和 UIImageView 類似,UIKit 隱藏了很多技術細節,降低開發者的學習門檻,但另一方面,卻也限制了我們對一些底層技術的探究。文中提到的強制解碼方法,其實也是CGBitmapContextCreate 方法的一個『副作用』,屬于比較hack方式,這也是iOS平臺的一個局限:蘋果過于封閉了。

用戶對軟件性能(幀率、響應速度、閃退率等等)其實非常敏感,作為開發者,必須不斷探究性能瓶頸背后的原理,并且嘗試解決,移動端開發的性能優化永無止境。

責任編輯:未麗燕 來源: 杏仁技術站
相關推薦

2014-12-10 10:12:02

Web

2023-03-09 10:23:00

圖片性能優化CSS

2013-12-17 16:21:17

iOSiOS性能優化

2021-07-05 14:55:28

前端優化圖片

2020-12-11 18:58:21

Nginx瀏覽器緩存

2024-06-04 07:46:05

2022-12-30 15:29:35

數據分析工具Pandas

2019-12-23 10:20:12

Web圖片優化前端

2019-03-21 14:18:38

iOS開發優化原因

2017-01-19 19:07:28

iOS進階性能優化

2019-03-06 10:25:30

Web圖片優化命令

2024-10-09 23:32:50

2012-07-06 09:51:34

2023-11-06 07:45:42

單據圖片處理

2010-09-07 16:11:55

CSS Sprites

2018-03-30 14:30:10

數據庫SQL語句性能優化

2022-01-09 16:45:36

前端性能優化編程

2022-10-28 13:41:51

字節SDK監控

2010-05-24 14:59:29

Hadoop集群

2023-11-18 19:46:07

GPU架構
點贊
收藏

51CTO技術棧公眾號

国产高潮呻吟久久| h无码动漫在线观看| 一级黄色片在线观看| 我不卡伦不卡影院| 日韩一级二级三级精品视频| 日韩国产成人无码av毛片| 欧美成熟毛茸茸| 全部av―极品视觉盛宴亚洲| 欧美日韩999| 亚洲综合网在线观看| 国产精品美女午夜爽爽| 亚洲一区二区欧美激情| 麻豆91蜜桃| 99久久精品国产成人一区二区| 亚洲二区视频| 最近日韩中文字幕中文| 国产探花一区二区三区| 免费观看一级欧美片| 你微笑时很美电视剧整集高清不卡| 色婷婷av一区二区三区之一色屋| 亚洲va电影大全| 久久精品久久精品久久| 成人中文视频| 日韩av影视综合网| 日韩视频在线观看一区二区三区| 欧美aa在线| 国产精品你懂的| 黄色小网站91| 精品人妻av一区二区三区| 麻豆精品网站| 久久久亚洲国产| 欧美老熟妇一区二区三区| 偷窥自拍亚洲色图精选| 亚洲国产视频在线| 亚洲三区视频| 男女视频在线观看| 成人性视频免费网站| 国产精品吴梦梦| 欧美三级视频网站| 日韩精品免费一区二区三区竹菊 | 欧美精品卡一卡二| 二区三区在线观看| 国产精品高潮呻吟久久| 日韩久久久久久久| 伊人免费在线观看| 成人激情视频| 亚洲精品中文字| 可以免费在线看黄的网站| 国产精品探花在线| 亚洲黄色性网站| 在线播放 亚洲| 日本a级在线| 中文av一区特黄| 亚洲高清123| 91网在线播放| 国产精品久99| 天天综合五月天| 国产精品实拍| 一区二区三区欧美| 亚洲爆乳无码精品aaa片蜜桃| 99免费在线视频| 久久国产日韩欧美精品| 国产欧美久久久久久| 国产精品露脸视频| 蜜臀久久99精品久久久画质超高清 | 欧美剧情电影在线观看完整版免费励志电影 | 黄色18在线观看| 偷窥少妇高潮呻吟av久久免费| 久久久国内精品| 丁香花电影在线观看完整版| 亚洲高清一区二区三区| 黄色成人在线看| 依依综合在线| 精品视频全国免费看| 亚洲欧美aaa| 日韩在线亚洲| 亚洲精品99久久久久中文字幕| 黄色网址在线视频| 女优一区二区三区| 中文字幕亚洲第一| 欧美成人综合色| 亚洲影院免费| 国产日韩在线视频| 成人免费观看在线视频| 91免费小视频| 91精品久久久久久久久| 国产老妇伦国产熟女老妇视频| 国产精品一区一区三区| 国产专区一区二区三区| 国产精品久久久午夜夜伦鲁鲁| 国产一区二区三区免费| 国产一区二区不卡视频在线观看| 日韩毛片在线一区二区毛片| 国产精品久久久久久福利一牛影视 | 欧美日韩国产综合网| 777777777亚洲妇女| 永久免费看mv网站入口| 欧美日一区二区在线观看 | 免费看日韩精品| 亚洲一区二区在线播放| 色av男人的天堂免费在线| 国产精品久久久久久久久搜平片| 国产精品国产三级国产专区51| 中文字幕在线免费观看视频| 欧美美女黄视频| av无码一区二区三区| 国产大片一区| 欧美在线一区二区视频| 97成人在线观看| 久久亚洲影视婷婷| 久久手机在线视频| 成人全视频在线观看在线播放高清 | 91av在线免费播放| 亚洲一区二区免费在线观看| 亚洲人成毛片在线播放| 麻豆影视在线播放| 免费黄网站欧美| 麻豆亚洲一区| 福利写真视频网站在线| 欧美日韩国产成人在线91| 久久人妻少妇嫩草av无码专区| 首页国产精品| 庆余年2免费日韩剧观看大牛| 精品久久久无码中文字幕| 国产欧美一区二区三区鸳鸯浴 | 国产v日韩v欧美v| 欧美美女一区二区在线观看| 久久精品无码一区| 一本色道久久综合亚洲精品高清| 久久九九免费视频| 久久久久99精品成人片我成大片 | 欧美三级中文字| 国产亚洲色婷婷久久99精品91| 一区二区三区午夜视频| 国产精品扒开腿做| 欧美zzoo| 色婷婷激情一区二区三区| 日本少妇毛茸茸| 在线日本高清免费不卡| 99三级在线| 91麻豆一二三四在线| 欧美高清视频www夜色资源网| 中文字幕成人动漫| 久久成人亚洲| 欧美一区二区综合| jizz内谢中国亚洲jizz| 精品亚洲男同gayvideo网站| 天天综合网入口| 99国产精品久久久久久久久久久| 国产情侣第一页| www.豆豆成人网.com| 欧美成人免费在线视频| 日韩免费不卡视频| 国产白丝精品91爽爽久久| 精品久久久久久乱码天堂| 欧美黄色视屏| 精品av综合导航| 色婷婷av国产精品| 久久综合九色综合久久久精品综合| 国产成人精品视频免费看| 日本精品影院| 日本亚洲欧美三级| 第一福利在线| 欧美一区二区三区四区五区| www青青草原| 成人美女视频在线看| 国产91在线视频观看| 国产成人ay| 国产日韩av高清| 国产精品扒开做爽爽爽的视频| 日韩欧美国产成人一区二区| 久久9999久久免费精品国产| 99久久久无码国产精品| 一区高清视频| 国产美女亚洲精品7777| 久久久久久国产| 日本精品一二区| 日韩欧美国产一区二区| 美女av免费看| 亚洲深夜影院| 欧美激情导航| 四虎成人精品一区二区免费网站| 久久夜精品va视频免费观看| 欧美熟妇交换久久久久久分类| 欧美日韩免费看| 日韩av福利在线观看| 欧美日韩中文| 欧美裸体网站| 懂色av色香蕉一区二区蜜桃| 久久久女女女女999久久| 久青青在线观看视频国产| 欧美巨大另类极品videosbest | 日日噜噜噜噜夜夜爽亚洲精品| 欧洲美女精品免费观看视频| 国语自产精品视频在线看抢先版图片| 三级av在线播放| 欧美一区二区三区在线看| 日本少妇裸体做爰| 国产精品久久久一区麻豆最新章节| 韩国三级hd中文字幕有哪些| 西西裸体人体做爰大胆久久久| 一区二区三区欧美成人| 麻豆一区一区三区四区| 国产欧美日韩中文| 亚洲天堂免费电影| 插插插亚洲综合网| 日本电影一区二区在线观看| 日韩一区二区在线观看| 国产一级片免费在线观看| 一区二区三区精品在线| 国产又粗又硬视频| 97久久久精品综合88久久| 国产三级精品三级在线| 久久狠狠一本精品综合网| 亚洲精品少妇一区二区| 日韩激情免费| 欧美一区少妇| 欧美aaaaaaaa牛牛影院| 亚洲影院色无极综合| 一区在线影院| 欧美一级成年大片在线观看| 少妇一级淫片免费看| 欧美日韩一区三区四区| 亚洲欧美自拍视频| 亚洲高清不卡在线观看| 潘金莲一级黄色片| 欧美极品美女视频| 日韩 中文字幕| 不卡视频在线观看| 久久久久无码精品| 韩日av一区二区| 国产免费又粗又猛又爽| 亚洲一区二区三区四区五区午夜 | 久久天天综合| 成熟丰满熟妇高潮xxxxx视频| 欧美日韩一区二区三区四区在线观看 | 久久精品国产www456c0m| 日本视频一区在线观看| 一道在线中文一区二区三区| 精品视频在线观看| 精品久久ai电影| 精品国产_亚洲人成在线| 视频精品一区| 粉嫩av一区二区三区免费观看| 免费欧美网站| 91久久精品www人人做人人爽| 久久青草视频| 成人网在线免费观看| 日韩欧美专区| 亚洲在线第一页| 日韩不卡在线视频| 成人黄色片视频网站| 日韩一级淫片| 国产欧美综合精品一区二区| 成人午夜网址| 久久久久天天天天| 欧洲专线二区三区| 亚洲欧洲精品一区二区| 欧美a级片视频| 欧洲美女和动交zoz0z| 你懂的网址国产 欧美| 91国在线高清视频| 欧美一区91| 六月婷婷在线视频| 日韩综合在线视频| 亚洲一级片网站| 国产伦精品一区二区三区免费| 美女被艹视频网站| 成人一区二区三区在线观看| 熟妇高潮精品一区二区三区| www日韩大片| 91麻豆精品久久毛片一级| 亚洲日穴在线视频| 日韩精品一区三区| 在线观看国产91| 免费人成年激情视频在线观看| 亚洲一区二区在线观看视频 | 欧美日韩免费一区二区三区| 亚洲最大成人在线视频| 婷婷一区二区三区| 国产一级片免费在线观看| 制服丝袜在线91| 免费看av毛片| 在线日韩av观看| 羞羞视频在线观看免费| 2023亚洲男人天堂| 蜜桃麻豆91| 精品产国自在拍| 中国一级大黄大黄大色毛片| 亚洲经典视频在线观看| 国产自偷自偷免费一区 | 欧美激情1区2区3区| 乱妇乱女熟妇熟女网站| 久久精品99国产精品日本| 四季av综合网站| 中文字幕日本乱码精品影院| 国产无套内射又大又猛又粗又爽| 在线免费观看日韩欧美| 亚洲国产精彩视频| 在线观看成人黄色| 国产探花在线观看| 国产精品香蕉国产| 精品视频自拍| 桥本有菜av在线| 久久精品系列| 色哟哟无码精品一区二区三区| 国产丝袜美腿一区二区三区| 国产在线观看免费av| 精品视频色一区| 日韩三级电影网| 精品国产美女在线| 韩日精品一区二区| 成人在线免费观看一区| 日韩精品不卡一区二区| 欧美精品99久久| 国产精品123| 国产精品99久久久久久成人| 在线观看免费视频综合| 桃花色综合影院| 欧美精品一区二区三区很污很色的| 国产高清视频在线播放| 国产91|九色| 国偷自产视频一区二区久| 国产欧美综合精品一区二区| 911久久香蕉国产线看观看| 男女啪啪网站视频| 久久久久在线| 亚洲av成人片色在线观看高潮 | 99热只有这里有精品| 欧美一区二区播放| 欧美极品视频| 国产精品网红福利| 日本久久精品| 好男人www社区| 久久久久久久免费视频了| 成人午夜视频精品一区| 亚洲第一精品福利| 欧美黄色视屏| 国产区欧美区日韩区| 亚洲午夜91| 黄www在线观看| 成人美女在线观看| 日韩精品一区二区在线播放| 精品久久久影院| heyzo在线欧美播放| 91中文在线观看| 91av精品| 91丨porny丨九色| 亚洲一区二区三区在线看| 性一交一乱一色一视频麻豆| 精品中文字幕在线2019| 日韩不卡在线视频| 久久久久99精品成人片| 北条麻妃一区二区三区| 日本少妇bbwbbw精品| 亚洲国产女人aaa毛片在线| 国产剧情av在线播放| 久久99精品久久久久久久久久| 香蕉久久夜色精品国产| 国产精品国产三级国产专业不 | 欧美极品中文字幕| 色一情一乱一伦一区二区三区日本| 国产女人aaa级久久久级 | 在线免费日韩片| 麻豆av福利av久久av| 日本中文字幕一区| 中文字幕观看av| 日韩精品一区二区三区视频 | 欧美91精品| 在线观看亚洲免费视频| 狠狠干狠狠久久| 91最新在线| 国产精品一区而去| 免费久久99精品国产自在现线| 黄大色黄女片18免费| 欧美一级欧美三级在线观看| 春色校园综合激情亚洲| 欧美日韩一区在线观看视频| 另类的小说在线视频另类成人小视频在线| 性欧美疯狂猛交69hd| 亚洲缚视频在线观看| 深夜成人影院| 欧美一级爱爱视频| 久久久久久久av麻豆果冻| 亚洲一区二区三区高清视频| 欧美高清电影在线看| 欧美男女视频| 亚洲色欲久久久综合网东京热| 久久综合久久综合久久| 一级日韩一级欧美| 久久青草精品视频免费观看| 欧美老女人另类| 苍井空张开腿实干12次| 欧美亚洲综合在线| 黄色成人在线网| 亚洲国产精品123| 99精品在线免费| 国产精品欧美激情在线| 38少妇精品导航| 欧美1区2区|