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

Go:通過 io.Writer 將 JPEG 轉為 JFIF

開發 后端
Go 的標準庫可讓你對 JPEG 圖像進行編碼。在 One of these JPEGs is not like the other[1] 一文中,Ben Cox 指出某些硬件不會解碼這些 JPEG 圖像,除非它們被增強為 JFIF 圖像。JFIF 代表“JPEG 文件交換格式”,在概念上是原始 JPEG 格式的次要版本。

 [[439345]]

大家好,我是程序員幽鬼。

Go 的標準庫可讓你對 JPEG 圖像進行編碼。在 One of these JPEGs is not like the other[1] 一文中,Ben Cox 指出某些硬件不會解碼這些 JPEG 圖像,除非它們被增強為 JFIF 圖像。JFIF 代表“JPEG 文件交換格式”,在概念上是原始 JPEG 格式的次要版本。

硬件缺乏支持有點令人驚訝,因為 JPEG 是一種無處不在的文件格式。他 fork[2] 并 修復[3] 標準 image/jpeg 包以插入必要的 JFIF 字節。

01 JPEG Wire 格式

就網絡(或磁盤)上的字節而言,JPEG 由一系列連接在一起的塊組成。每個塊要么是一個裸標記(兩個字節,以 開頭 0xff)要么是一個標記段(四個或更多字節是一個兩字節標記,同樣以 0xff 開頭,一個兩字節的長度,然后是一個額外的數據負載)。以下是 Wikipedia 的Example.jpg[4] 十六進制表示:

  1. $ wget --quiet https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg 
  2. $ hd Example.jpg | head -n 5 
  3. 00000000  ff d8 ff e0 00 10 4a 46  49 46 00 01 01 01 00 48  |......JFIF.....H| 
  4. 00000010  00 48 00 00 ff e1 00 16  45 78 69 66 00 00 4d 4d  |.H......Exif..MM| 
  5. 00000020  00 2a 00 00 00 08 00 00  00 00 00 00 ff fe 00 17  |.*..............| 
  6. 00000030  43 72 65 61 74 65 64 20  77 69 74 68 20 54 68 65  |Created with The| 
  7. 00000040  20 47 49 4d 50 ff db 00  43 00 05 03 04 04 04 03  | GIMP...C.......| 

在打開的 80 個字節標記:

  • 一個 ff d8 SOI(圖像的開始)標記。
  • 一個 ff e0 APP0 標記段;有效載荷以 “JFIF” 開頭。
  • 一個 ff e1 APP1 標記段;有效載荷以 “Exif” 開頭。
  • 一個 ff fe 注釋標記段,“Created 等等”。
  • 一個 ff db DQT(定義量化表)標記段。

file 命令也認為這是 JFIF(帶 Exif),而不僅僅是 JPEG:

  1. $ file Example.jpg 
  2. Example.jpg: JPEG image data, JFIF... Exif... baseline... 

02 JFIF Wire 格式

JFIF 文件是一個 JPEG 文件,它的第二個塊(在作為第一個塊的 SOI 之后)是一個 APP0 塊,其有效載荷以 “JFIF” 開頭。一個有趣的點是 JFIF 和 EXIF 規范在技術上不兼容,因為它們都想占用第二塊(the second chunk):

  • JFIF 規范[5]第 2 頁提到:“JPEG FIF APP0 標記必須緊跟在 SOI 標記之后”。
  • EXIF 規范[6] 第 4.5.4 段提到:“APP1 是緊跟在 SOI 標記之后的”。

在實踐中,似乎 JFIF 'won' 和 EXIF 可以是第三個塊。

03 生成普通的舊 JPEG

這篇博文提供了不需要任何標準庫補丁(或 forks)的 Cox 方法的替代方法。與往常一樣,fork 具有從上游緩慢分叉的長期風險。Go 標準庫的上游補丁受制于“3 個月的新功能,3 個月的穩定” 發布周期[7],并決定額外的 JFIF 塊是強制性的還是可選的(如果可選,API 應該是什么,受兼容性限制[8])。

該方案的主要思想是 jpeg.Encode[9] 函數接受一個 io.Writer 參數,并且很容易包裝 io.Writer 以在正確的位置插入 JFIF 字節。

首先,讓我們編寫一個簡單的程序來生成一張 1x1 JPEG 圖像。

  1. package main 
  2.  
  3. import ( 
  4.     "image" 
  5.     "image/jpeg" 
  6.     "os" 
  7.  
  8. func main() { 
  9.     m := image.NewGray(image.Rect(0, 0, 1, 1)) 
  10.     if err := jpeg.Encode(os.Stdout, m, nil); err != nil { 
  11.         os.Stderr.WriteString(err.Error() + "\n"
  12.         os.Exit(1) 
  13.     } 

運行它會生成一個 JPEG(但不是 JFIF)文件。

  1. $ go run from-jpeg-to-jfif.go > x 
  2. $ hd x | head -n 5 
  3. 00000000  ff d8 ff db 00 84 00 08  06 06 07 06 05 08 07 07  |................| 
  4. 00000010  07 09 09 08 0a 0c 14 0d  0c 0b 0b 0c 19 12 13 0f  |................| 
  5. 00000020  14 1d 1a 1f 1e 1d 1a 1c  1c 20 24 2e 27 20 22 2c  |......... $.' ",| 
  6. 00000030  23 1c 1c 28 37 29 2c 30  31 34 34 34 1f 27 39 3d  |#..(7),01444.'9=| 
  7. 00000040  38 32 3c 2e 33 34 32 01  09 09 09 0c 0b 0c 18 0d  |82<.342.........| 
  8. $ file x 
  9. x: JPEG image data, baseline, precision 8, 1x1, components 1 

04 一個 JFIFifying Writer

我們編寫一個 jfifEncode 函數,它可以直接替代 jpeg.Encode 但添加額外的 JFIF 字節,只要第二個標記(緊接在 SOI 之后的那個)不是 APP0。

  1. package main 
  2.  
  3. import ( 
  4.     "errors" 
  5.     "image" 
  6.     "image/jpeg" 
  7.     "io" 
  8.     "os" 
  9.  
  10. func main() { 
  11.     m := image.NewGray(image.Rect(0, 0, 1, 1)) 
  12.     if err := jfifEncode(os.Stdout, m, nil); err != nil { 
  13.         os.Stderr.WriteString(err.Error() + "\n"
  14.         os.Exit(1) 
  15.     } 
  16.  
  17. func jfifEncode(w io.Writer, m image.Image, o *jpeg.Options) error { 
  18.     return jpeg.Encode(&jfifWriter{w: w}, m, o) 
  19.  
  20. // jfifWriter wraps an io.Writer to convert the data written to it from a plain 
  21. // JPEG to a JFIF-enhanced JPEG. It implicitly buffers the first three bytes 
  22. // written to it. The fourth byte will tell whether the original JPEG already 
  23. // has the APP0 chunk that JFIF requires. 
  24. type jfifWriter struct { 
  25.     // w is the wrapped io.Writer. 
  26.     w io.Writer 
  27.     // n ranges between 0 and 4 inclusive. It is the number of bytes written to 
  28.     // this (which also implements io.Writer), saturating at 4. The first three 
  29.     // bytes are expected to be {0xff, 0xd8, 0xff}. The fourth byte indicates 
  30.     // whether the second JPEG chunk is an APP0 chunk or something else
  31.     n int 
  32.  
  33. func (jw *jfifWriter) Write(p []byte) (int, error) { 
  34.     nSkipped := 0 
  35.  
  36.     for jw.n < 3 { 
  37.         if len(p) == 0 { 
  38.             return nSkipped, nil 
  39.         } else if p[0] != jfifChunk[jw.n] { 
  40.             return nSkipped, errors.New("jfifWriter: input was not a JPEG"
  41.         } 
  42.         nSkipped++ 
  43.         jw.n++ 
  44.         p = p[1:] 
  45.     } 
  46.  
  47.     if jw.n == 3 { 
  48.         if len(p) == 0 { 
  49.             return nSkipped, nil 
  50.         } 
  51.         chunk := jfifChunk 
  52.         if p[0] == 0xe0 { 
  53.             // The input JPEG already has an APP0 marker. Just write SOI (2 
  54.             // bytes) and an 0xff: the three bytes we've previously skipped. 
  55.             chunk = chunk[:3] 
  56.         } 
  57.         if _, err := jw.w.Write(chunk); err != nil { 
  58.             return nSkipped, err 
  59.         } 
  60.         jw.n = 4 
  61.     } 
  62.  
  63.     n, err := jw.w.Write(p) 
  64.     return n + nSkipped, err 
  65.  
  66. // jfifChunk is a sequence: an SOI chunk, an APP0/JFIF chunk and finally the 
  67. // 0xff that starts the third chunk. 
  68. var jfifChunk = []byte{ 
  69.     0xff, 0xd8, // SOI  marker. 
  70.     0xff, 0xe0, // APP0 marker. 
  71.     0x00, 0x10, // Length: 16 byte payload (including these two bytes). 
  72.     0x4a, 0x46, 0x49, 0x46, 0x00, // "JFIF\x00"
  73.     0x01, 0x01, // Version 1.01. 
  74.     0x00,       // No density units. 
  75.     0x00, 0x01, // Horizontal pixel density. 
  76.     0x00, 0x01, // Vertical   pixel density. 
  77.     0x00, // Thumbnail width. 
  78.     0x00, // Thumbnail height. 
  79.     0xff, // Start of the third chunk's marker. 

現在運行它會生成一個 JFIF 文件,而不僅僅是一個 JPEG 文件。

  1. $ go run from-jpeg-to-jfif.go > y 
  2. $ hd y | head -n 5 
  3. 00000000  ff d8 ff e0 00 10 4a 46  49 46 00 01 01 00 00 01  |......JFIF......| 
  4. 00000010  00 01 00 00 ff db 00 84  00 08 06 06 07 06 05 08  |................| 
  5. 00000020  07 07 07 09 09 08 0a 0c  14 0d 0c 0b 0b 0c 19 12  |................| 
  6. 00000030  13 0f 14 1d 1a 1f 1e 1d  1a 1c 1c 20 24 2e 27 20  |........... $.' | 
  7. 00000040  22 2c 23 1c 1c 28 37 29  2c 30 31 34 34 34 1f 27  |",#..(7),01444.'| 
  8. $ file y 
  9. y: JPEG image data, JFIF... baseline... 

05 結論

這里的細節是關于 JPEG 和 JFIF 的,但一般的想法是,如果 encoding 庫(Go 中的一個包)缺少一個功能,你可以不通過更改該庫來修復它(或以其他方式對其進行處理),而是預處理輸入或處理輸出。

原文鏈接:https://nigeltao.github.io/blog/2021/from-jpeg-to-jfif.html

參考資料

[1]One of these JPEGs is not like the other: https://blog.benjojo.co.uk/post/not-all-jpegs-are-the-same

[2]fork: https://github.com/benjojo/app0-image-jpeg

[3]修復: https://github.com/benjojo/app0-image-jpeg/commit/645750c1672807c80c08a57a684a0ada7bf371d9

[4]Example.jpg: https://en.wikipedia.org/wiki/File:Example.jpg

[5]JFIF 規范: https://www.w3.org/Graphics/JPEG/jfif3.pdf

[6]EXIF 規范: https://www.exif.org/Exif2-2.PDF

[7]發布周期: https://github.com/golang/go/wiki/Go-Release-Cycle

[8]兼容性限制: https://golang.org/doc/go1compat

[9]jpeg.Encode: https://pkg.go.dev/image/jpeg#Encode

本文轉載自微信公眾號「程序員ug」,可以通過以下二維碼關注。轉載本文請聯系程序員ug公眾號。

 

責任編輯:武曉燕 來源: 程序員ug
相關推薦

2024-07-09 08:07:37

Go性能工具

2025-09-28 09:04:29

Go 語言IOReader

2022-10-20 08:59:18

Go接口類型

2025-02-12 11:06:24

Go函數MultiBytes

2023-11-28 08:52:48

Go日志庫

2023-10-07 09:08:32

Golangbufio

2023-11-07 09:02:07

Golangbytes

2024-04-29 08:45:16

Go語言PDF

2020-10-25 06:30:48

Go語言編程語言

2012-05-19 22:17:30

Android

2022-02-15 11:49:08

eBPFGo內存

2015-12-10 10:47:25

微軟Windows Liv開源

2020-11-11 17:00:02

PythonOffice文件PDF

2021-08-27 15:30:13

PSPhotoshopPS格式

2023-01-30 15:41:10

Channel控制并發

2022-04-24 15:29:17

微服務go

2021-12-29 07:56:32

Go byte io.Reader

2021-09-17 14:13:28

JavaScript編程字符串

2019-01-03 15:40:38

數據庫SQL查詢JSON

2021-02-01 06:39:42

模塊封裝庫
點贊
收藏

51CTO技術棧公眾號

美女网站色91| 永久亚洲成a人片777777| 岛国精品视频在线播放| 三级三级久久三级久久18| 国产又黄又粗又猛又爽| 欧美 日韩 国产精品免费观看| 日韩精品一区二区三区蜜臀| 男人日女人下面视频| yiren22综合网成人| 国产精品一区二区久激情瑜伽| 国外成人在线播放| 麻豆视频免费在线播放| 爱爱精品视频| 欧美裸体一区二区三区| 东北少妇不带套对白| 1区2区3区在线观看| www.欧美日韩| 91久久精品日日躁夜夜躁国产| 日韩av免费网址| 99精品小视频| 亚洲欧美精品中文字幕在线| 伊人免费视频二| 亚洲mmav| 偷拍与自拍一区| 日本女人高潮视频| 成人高清免费在线播放| 99在线精品观看| 亚洲自拍偷拍视频| 国模私拍一区二区| 亚洲欧美日韩国产| 欧美福利视频在线| 美女视频久久久| 国产精品欧美在线观看| 欧美精品一区二区久久久| 伊人成人222| 欧美黄色三级| 日韩欧美高清视频| 奇米精品一区二区三区| 乱插在线www| 亚洲欧美精品午睡沙发| 亚洲一区二区三区欧美| 黄色的视频在线免费观看| 99精品视频在线播放观看| 亚洲综合av影视| 国产乱淫av免费| 麻豆精品一二三| 国产精品一区二区三区免费视频| 日本特级黄色片| 国产精品一二| 国产91精品久| 国产精品一区二区三区四| 亚洲高清电影| 97在线看福利| 久久久久久国产精品视频| 羞羞答答成人影院www| 日韩中文字幕精品视频| 亚洲熟女毛茸茸| 99九九热只有国产精品| 色阁综合伊人av| 欧美一区二区三区观看| 忘忧草精品久久久久久久高清| 最近2019年手机中文字幕| 啪啪一区二区三区| 亚洲精品成人无限看| 久久av在线看| 欧美日韩精品在线观看视频 | 99蜜月精品久久91| 欧美午夜一区二区三区| 99sesese| 欧美在线在线| 亚洲精品aⅴ中文字幕乱码| 一区二区免费在线观看视频| 欧美电影在线观看完整版| 日韩精品在线视频美女| 免费观看a级片| 婷婷综合网站| 久久久久久久久亚洲| 国产在线一区视频| 性欧美长视频| 成人黄色片网站| 精品欧美一区二区精品少妇| 成人免费视频视频在线观看免费| 国产日本一区二区三区| 欧美日韩国产亚洲沙发| 国产精品福利电影一区二区三区四区| 一区二区在线观| 国精一区二区三区| 日韩欧中文字幕| 污网站免费在线| aaa国产精品视频| 国产亚洲成精品久久| 我要看一级黄色录像| 国产在线不卡| 国产精品扒开腿做| 亚洲av无码国产综合专区| 久久亚洲精品国产精品紫薇| 亚洲在线色站| av中文在线资源| 欧美亚洲国产一区二区三区va | 99re在线精品| 亚洲二区自拍| 3344国产永久在线观看视频| 91久久精品午夜一区二区| 午夜一区二区视频| 欧美一级全黄| www.亚洲免费视频| 在线观看亚洲天堂| 国产乱码精品一区二区三区忘忧草 | 国产成人综合亚洲91猫咪| 你懂的视频在线一区二区| 国产精品久久久久久福利| 岛国av午夜精品| 欧美老女人bb| 97久久视频| 欧洲中文字幕国产精品| 99久久精品国产成人一区二区 | 精品一区二区三区免费播放| 国产一区喷水| av香蕉成人| 欧美三级电影在线观看| 日本一卡二卡在线| 欧美在线亚洲| 国产欧美在线视频| 国产原创av在线| 疯狂做受xxxx高潮欧美日本| 日日夜夜精品视频免费观看| 日韩精品不卡一区二区| 日本国产精品视频| 神马午夜电影一区二区三区在线观看 | 超碰在线无需免费| 欧美午夜不卡在线观看免费| 亚洲精品乱码久久久久久久| 国产精品mv在线观看| 成人免费黄色网| 在线观看免费黄视频| 91福利小视频| 亚洲午夜福利在线观看| 在线一区欧美| 九九99久久| 欧美男男tv网站在线播放| 亚洲精品一区二区三区99| 欧美精品久久久久久久久46p| 蜜桃av噜噜一区| 青青影院一区二区三区四区| 天堂√8在线中文| 日韩毛片在线看| av资源免费观看| 丁香五精品蜜臀久久久久99网站 | 久久久综合香蕉尹人综合网| 激情图片在线观看高清国产| 日韩欧美激情一区| 欧美成人三级视频| 粉嫩高潮美女一区二区三区| 精品无码av无码免费专区| 欧美经典一区| 欧美另类暴力丝袜| www.五月婷婷| 亚洲五月六月丁香激情| 亚洲一级Av无码毛片久久精品| 欧美日韩影院| 国产区二精品视| 国产乱码精品一区二三赶尸艳谈| 亚洲国产精品va在线看黑人| 亚州国产精品视频| 久久麻豆一区二区| www.日日操| 97精品97| 国产精品麻豆免费版| 国产中文在线播放| 亚洲欧美日本另类| 亚洲手机在线观看| 亚洲精品国产a| 国产污在线观看| 亚洲综合好骚| 在线观看成人一级片| 欧美国产中文高清| 26uuu久久噜噜噜噜| 成人性爱视频在线观看| 在线电影院国产精品| 精品午夜福利视频| 久久亚洲二区三区| 91女神在线观看| 亚洲午夜极品| 欧美性xxxx69| 亚洲色图图片| 午夜精品久久久久久久99黑人 | 国产视频一区二区在线| 中文字幕免费高清在线| 欧美婷婷在线| 日本精品一区二区| 国产精品视频一区二区三区| 久久久最新网址| 国产h在线观看| 精品少妇一区二区三区视频免付费 | wwwxxx在线观看| 精品国产污网站| 国产成人a v| 一区二区三区中文在线| 亚洲一区二区观看| 国产精品一品视频| 欧美大尺度做爰床戏| 国产一区二区三区自拍| 涩涩涩999| 免费看成人人体视频| 国产日韩欧美电影在线观看| 97久久人人超碰caoprom| 在线激情影院一区| 天天干天天做天天操| 欧美精品国产精品| 黄色片中文字幕| 亚洲国产成人精品视频| 自拍偷拍你懂的| 91网页版在线| 久久久久久久人妻无码中文字幕爆| 麻豆精品国产91久久久久久| 国产91在线免费| 欧美在线看片| 一区二区不卡在线观看| 色老板在线视频一区二区| 亚洲精品免费av| abab456成人免费网址| 97激碰免费视频| 亚洲卡一卡二| 久久精品久久久久久| 麻豆国产在线播放| 日韩精品极品视频免费观看| 亚洲成人一级片| 日韩一级二级三级| 国产尤物在线观看| 欧美日韩一二三| 久久久久精彩视频| 色综合色综合色综合 | 亚洲在线网站| 成人一区二区免费视频| 欧美视频四区| 在线观看av的网址| 亚洲啊v在线观看| 正在播放亚洲| 91成人精品| 色香蕉在线观看| 亚洲v在线看| 黄色污污在线观看| 欧美日本不卡| 国产精品va在线观看无码| 91麻豆精品国产91久久久平台| 五月天亚洲综合小说网| 精品国产乱码久久久久久1区2匹| 蜜桃导航-精品导航| 欧美成a人免费观看久久| 国精产品一区二区| 欧美freesex8一10精品| 国内精品**久久毛片app| 久久中文资源| 久久精品丝袜高跟鞋| 宅男在线一区| 亚洲精品国产精品国自产观看| 欧美一级精品片在线看| 亚洲视频电影| 香蕉视频官网在线观看日本一区二区| 天堂v在线视频| 午夜国产精品视频| 可以看毛片的网址| 亚洲在线一区| 538任你躁在线精品免费| 极品少妇一区二区| 国产人妖在线观看| va亚洲va日韩不卡在线观看| 亚洲av网址在线| 欧美国产亚洲另类动漫| 一级免费黄色录像| 一级特黄大欧美久久久| 天天操天天爽天天干| 91国产免费观看| 国产内射老熟女aaaa∵| 欧美电影免费提供在线观看| 无码h黄肉3d动漫在线观看| 国产亚洲精品美女久久久久| 美女国产在线| 久久久久久香蕉网| 国产v综合v| 51国偷自产一区二区三区| 加勒比中文字幕精品| 日本亚洲导航| 国产精品magnet| 乱子伦视频在线看| 国产一区二区三区在线观看精品 | 亚洲精品乱码久久久久久| 国产午夜精品一区二区理论影院| 天天爽夜夜爽夜夜爽精品视频| 免费精品一区二区| 精品国产乱码久久久久久久久| 免费毛片在线| 欧美乱大交xxxxx另类电影| 神马久久午夜| 亚洲xxxxx性| 精品一区电影| 成人午夜免费在线| 狠狠色综合日日| 97超碰在线免费观看| 亚洲欧美视频在线观看| 欧美 日韩 精品| 日韩欧美色综合| 91高清在线| 欧洲成人性视频| 日韩高清一区| 亚洲欧洲精品在线| 一区二区三区成人精品| 欧美视频亚洲图片| 国产欧美日韩中文久久| 国产91av视频| 宅男噜噜噜66一区二区66| 男男电影完整版在线观看| 欧美激情欧美狂野欧美精品| a成人v在线| 麻豆av一区二区三区| 国产在线不卡| 中文字幕一二三区| 国产精品传媒入口麻豆| 亚洲黄色激情视频| 精品区一区二区| 91在线中字| 成人美女免费网站视频| 欧美美女视频| 欧美成人黑人猛交| 久久伊99综合婷婷久久伊| 国语对白一区二区| 日韩午夜精品视频| 激情影院在线观看| 91精品久久久久久久久久久久久| 蜜桃一区二区| 国产91在线免费| 91丨porny丨中文| 久青草免费视频| 欧美成人性战久久| 黄视频在线观看网站| 国产精品一区二区三区成人| 精品久久国产| 69久久久久久| 国产精品久久网站| 艳妇乳肉豪妇荡乳av无码福利| 亚洲欧美另类中文字幕| 在线男人天堂| 欧美精品v日韩精品v国产精品| 国产日韩欧美三级| 91精品小视频| 色综合久久久久网| 韩国三级av在线免费观看| 日本久久久久久久| 国产麻豆精品久久| 九九九在线观看视频| 中文字幕第一页久久| 自拍偷拍精品视频| 久久国产主播| 波多野结衣作品集| 久久久精品2019中文字幕之3| 四虎成人永久免费视频| 亚洲欧美国产精品专区久久| 日韩毛片免费观看| 日韩国产欧美精品| 蜜臀av亚洲一区中文字幕| 三上悠亚在线观看视频| 欧美一区二区在线播放| 欧美家庭影院| 精品国产福利| 日韩成人午夜精品| 男人在线观看视频| 精品精品国产高清一毛片一天堂| 电影k8一区二区三区久久| 国产伦精品一区二区三区照片91| 亚洲永久网站| 天堂网中文在线观看| 日韩欧美一级二级| 欧美激情护士| 中文字幕欧美日韩一区二区| 国产丶欧美丶日本不卡视频| 国产手机在线视频| 夜夜躁日日躁狠狠久久88av| 先锋影音一区二区| 草b视频在线观看| 国产欧美日韩三级| 国产视频一区二区三| 国内精品在线一区| 久久精品国产亚洲夜色av网站| 国产探花在线观看视频| 五月激情综合色| 欧美日本一道| 久久亚洲精品欧美| 国内成人精品2018免费看| 日韩久久久久久久久| 一区二区三区无码高清视频| 国产美女视频一区二区| 久久精品香蕉视频| 一区二区三区在线看| 蜜桃免费在线| 成人av男人的天堂| 丝袜国产日韩另类美女| 国产精品免费人成网站酒店| 亚洲美女www午夜| 亚洲国产aⅴ精品一区二区| 日韩手机在线观看视频|