午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > canvas如何實現(xiàn)多張圖片編輯的圖片編輯器

canvas如何實現(xiàn)多張圖片編輯的圖片編輯器

熱門標(biāo)簽:地圖標(biāo)注軟件打印出來 惡搞電話機器人 ok電銷機器人 智能電銷機器人被禁用了么 黃石ai電銷機器人呼叫中心 欣鼎電銷機器人 效果 電話機器人技術(shù) 高德地圖標(biāo)注商戶怎么標(biāo) 如何查看地圖標(biāo)注

前言

圖片編輯器雖然是圖片涂鴉工具,但是在當(dāng)前疫情的大背景下,該工具還可以成為老師在線修改學(xué)生提交的家庭作業(yè)的工具使用的,它可以極大地減輕了老師的批改作業(yè)的工作負(fù)擔(dān),相信這軟件是有市場的。
本次不具體介紹canvas的各種操作畫布的api,而且相信大家在網(wǎng)上能搜到大量的關(guān)于canvas涂鴉的開源代碼,即使是這樣,我也相信真正把canvas涂鴉用于公司實際的項目的不多,改裝成圖片編輯器的會更少,而用于多張圖片編輯然后多張統(tǒng)一保存、上傳的更是寥寥無幾。下面,我將在我曾經(jīng)寫過的一個canvas涂鴉的基礎(chǔ)上,將多張圖片編輯器的開發(fā)和思考過程記錄下來。

圖片編輯器產(chǎn)品需求

先說需求,由于涉及到實際公司的項目開發(fā),滿足需求的圖片編輯器可能只是編輯一張單獨的圖片,可能是給你一個圖片列表也就是多張圖片的編輯,在用戶保存之前,用戶可以來回切換現(xiàn)在編輯哪張圖片,而且要記住每張照片的編輯操作,都要允許可以撤銷,最后統(tǒng)一點擊保存按鈕,沒有編輯過的圖片將被丟棄,已經(jīng)編輯過的帶著涂鴉的圖片上傳給服務(wù)器。

準(zhǔn)備工作,必須了解的相關(guān)知識點

html2canvas的使用

html2canvas這個插件實際是將網(wǎng)頁上的普通html元素轉(zhuǎn)化成canvas。那么為什么要將html元素轉(zhuǎn)化成canvas呢?那是因為canva具有許多html元素不具備的特點,例如可以在canvas上畫圖,畫線條等等操作,而且canvas直接提供api可以將畫布上展示的內(nèi)容導(dǎo)成圖片。是不是有點類似于截圖,html2canvas就是利用這一點。 我最開始使用html2canvas時在公司h5項目有一個手寫板的項目。需要在是手寫板中簽字,然后將簽字之后的圖片導(dǎo)出然后上傳。后來又有一個在web端的圖片編輯器的項目,又用到了html2canvas這個插件,下面來介紹下該插件

介紹

html2canvas的缺點:

用html2canvas轉(zhuǎn)成的canvas,在最后生成的視覺效果上并不是100%還原原來的元素,也就是說會有部分像素點會丟失。

html2canvas的安裝

npm install html2canvas

html2canvas的引入

import html2canvas from 'html2canvas'

html2canvas的使用

如果一個帶圖片(無論是img標(biāo)簽還是背景圖)的html元素在轉(zhuǎn)成canvas之后,該生成的canvas中img或者背景圖缺失,變成了白色的底,并且控制臺都告訴你圖片跨域了,解決方案如下:
以下第1條必須滿足,然后第2、3是根據(jù)是html元素是img標(biāo)簽還是背景圖,來添加不同的配置項。

1.圖片服務(wù)器配置Access-Control-Allow-Origin 或使用代理
2.html2canvas的配置項中配置useCORS:true
3.img標(biāo)簽增加 crossOrigin='anonymous'

html轉(zhuǎn)canvas,并且解決圖片跨域問題

html2canvas(dom, {
  useCORS: true, // 背景圖片跨域
  scale: window.devicePixelRatio,//像素比
  width: dom.offsetWidth
  height: dom.offsetHeight
}).then(canvas => {
  //得到base64
  let base64 = canvas.toDateUrl() 
})

因為html2canvas將普通的html轉(zhuǎn)成了canvas,而canvas自帶將自身轉(zhuǎn)成的base64的方法,而base64格式文件可以直接作為img標(biāo)簽的src,展示在頁面上

<img :src='base64' />

此時如果希望將生成的圖片上傳,base64是無法直接上傳的,需要將base64轉(zhuǎn)成blob格式。所以如下:我們將得到的base64數(shù)據(jù)傳進(jìn)base64ToBlob函數(shù),最后函數(shù)return的結(jié)果就是blob數(shù)據(jù)。請注意:該方法只是單純的將base64轉(zhuǎn)成blob的通用方法

base64轉(zhuǎn)blob

function base64ToBlob(base64){
    var arr = base64.split(','), mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      return (new Blob([u8arr], { type: mime }))
}

其實canvas自帶將canas轉(zhuǎn)化成blob對象的方法

canvas轉(zhuǎn)blob

canvas.toBlob(file=>{
    //此時file就是blob數(shù)據(jù)格式。
    //成功上傳成blob之后需要為該blob數(shù)據(jù)添加name屬性,否則后面上傳到服務(wù)器會報錯:size not set
    file.name = 'cover.png'
})

但是在實際項目開發(fā)中遇到部分低版本的手機瀏覽器中的canvas元素不支持toBlob方法,報錯toBlob is not a function。所以此時我們需要對當(dāng)前不支持canvas.toBlo方法的瀏覽器做polyfill

DOM canvas元素暴露了HTMLCanvasElement接口,該接口提供了用來操作一個canvas元素布局和呈現(xiàn)的屬性和方法HTMLCanvasElement接口繼承了element接口的屬性和方法。(來自MDN)

toBlob方法兼容性寫法

if (!HTMLCanvasElement.prototype.toBlob) {
    Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {
      value: function (callback, type, quality) {
        var binStr = atob(this.toDataURL(type, quality).split(',')[1])
        var len = binStr.length
        var arr = new Uint8Array(len)

        for (var i = 0; i < len; i++) {
          arr[i] = binStr.charCodeAt(i)
        }

        callback(new Blob([arr], { type: type || 'image/png' }))
     }
    })
}

以上代碼判斷當(dāng)前瀏覽器HTMLCanvasElement.prototype內(nèi)是否含有toBlob方法,如果沒有該方法,則為HTMLCanvasElement.prototype添加toBlob方法。
到目前為止,無論是base64直接轉(zhuǎn)成blob,還是canvas直接轉(zhuǎn)成blob,最后目的都是為了將blob數(shù)據(jù)上傳到服務(wù)器。請注意:當(dāng)前頁面的blob數(shù)據(jù)是存儲在緩沖區(qū)的,而不是像電腦本地文件存儲在硬盤中上傳那樣,所以需要添加 isLocalFile:false屬性,fileData屬性接收一個數(shù)組,如果是一張圖片,則是個長度為1的,元素為blob格式的數(shù)組。上傳文件到服務(wù)器在這里不做介紹。

提交blob到服務(wù)器

// 轉(zhuǎn)完圖片數(shù)據(jù),提交服務(wù)器
    async upload (blobArr) {
      const oss = await this.$uploadOSS.init({
        fileData: blobArr,
        isLocalFile: false,
        onProgress: percent => {},
        onSuccess: (res) => {
          console.log(res)
        }
      })
      if (oss) {
        const data = await oss.start()
        if (!data.code) {
          this.$message.error(data.message)
        }
      }
    },

以上是對html2canvas好和canvas的常見的屬性的介紹,同時也是開發(fā)圖片編輯器的前提。下面會一步步詳細(xì)介紹下在已有的canvas涂鴉板的基礎(chǔ)上的開發(fā)多張圖片編輯器的思路和過程。

基于canvas的圖片編輯器的怎么做?

1、既然要編輯圖片,自然要提供給我們的圖片的地址,可能是本地相對路徑,也可能是遠(yuǎn)程地址,也可能是一張或者是多張圖片。所以進(jìn)行操作的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,如果只有一張圖那就是長度為1的,元素為圖片地址的數(shù)組,另外需要解決圖片跨域來避免生成的圖片只有涂鴉部分,且背景白色、頭像或者圖片丟失的情況,上面已經(jīng)提供了詳細(xì)的解決方案。

2、圖片編輯器肯定是個通用組件,所以根據(jù)父組件傳進(jìn)來的圖片src的一個長度為length的數(shù)組,來填充一個相同長度的二維數(shù)組,二維數(shù)組中的元素記錄的是每一張圖片被編輯的歷史記錄的集合,也就是每一次操作canvas的時候生成的base64數(shù)據(jù),在開始編輯之前初始化的時候該圖片默認(rèn)填充空數(shù)組[],在這里介紹一個填充數(shù)組很好用的方法fill,值得注意:fill的內(nèi)容如果是引用類型,會導(dǎo)致fill的每一項都是同一個引用,導(dǎo)致在操作其中一個元素時,其余所有的元素都一起改變。

//result:[[],[],...]
this.canvasArrBase = Array(length).fill(0).map(item => {
  return []
})

2、點擊不同的圖片,將該圖片的src傳進(jìn)編輯器組件,并將該src作為canvas背景圖,此時視覺上看到了一圖,在dom中其實是canvas的一張背景圖為src。
3、開始在頁面涂鴉畫布,為了避免無法在surface等觸控屏設(shè)備上使用畫布涂鴉或者圖片編輯器,請使用touch事件,而不是mouse事件。

 // 開始繪制
  canvas.addEventListener('touchstart', e=> {
    ...
  },false)
  
  // 繪制中
  canvas.addEventListener('touchmove', e=>{
   ...
  },false)
  
  // 結(jié)束繪制
  canvas.addEventListener('touchend', e=>{
    ...
  },false)

4、在進(jìn)入圖片編輯器之前將點擊的圖片的索引和圖片所在的圖片數(shù)組,一起作為props傳入圖片編輯器,記住當(dāng)前在編輯第幾張圖片currentIndex,才能將涂鴉或者撤銷操作都記錄在這張圖片之上。當(dāng)用戶在畫布上每操作一次,也就是開始touchstart,然后touchmove,最后touchend的時候,將當(dāng)前的canvas畫布的內(nèi)容(所有內(nèi)容,不只是剛剛涂鴉的那一筆。類似于git的每一次提交,即使只是提交一行代碼,git也都會為整個項目生成一份快照,而不只是記錄本次修改的一行代碼,git回滾就是快照的回滾),包括這張背景圖片使用canvas.toDateUrl()生成base64,將其push進(jìn)我們上面介紹的this.canvasArrBase[currenIndex]里,這時currenIndex所在數(shù)組的圖片多了一張歷史記錄,也就是剛剛涂鴉的畫面被我們保存下來了。這也就是canvas圖片編輯器,撤銷的基礎(chǔ),有了它我們才知道撤銷之后展示什么。

//新的土涂鴉操作生成的快照存儲在當(dāng)前索引的數(shù)組內(nèi)
 this.canvasArrBase[this.currentIdex].push(canvas.toDataUrl())

5、切換圖片也就意味著改變了canvas的背景圖,改變了currentIndex,然后在新的currentIndex上對另外一張圖片進(jìn)行編輯,其實也是同樣的步驟,無非就是往當(dāng)前編輯的圖片的push畫布剛剛展示的所有內(nèi)容。
6、重點來了,撤銷如何做呢?如何撤銷,如何在畫布上一步步撤銷并且看到上一次,上上次的繪畫記錄呢?
隨著每張圖片的編輯,每張圖片產(chǎn)生一些歷史記錄,我們就是利用這些歷史記錄的來進(jìn)行回滾撤銷操作的。當(dāng)我們在當(dāng)前已經(jīng)編輯過的圖片中點一次撤銷的時候,我們需要將上次canvas中展示的畫布內(nèi)容畫到當(dāng)前的畫布中。在撤銷的時候可以直接將我們存儲的數(shù)據(jù)源直接刪掉,所以只需要利用 canvas.drawImage() 方法,將需要展示的那一條記錄畫到canvas畫布中即可。

drawImage方法有很多參數(shù),用法點擊查看詳情

let newBaseArr = this.canvasArrBase[this.currentIdex]
let { offsetWidth: canvasWidth, offsetHeight: canvasHeight } = canvas

//生成一張新的圖片
let image = new Image()

//圖片的src賦值成當(dāng)前需要展示的base64的值(也就是讓用戶看到撤銷后的畫面)
image.src = this.canvasArrBase[this.currentIdex][newBaseArr.length-1]
//給img的src賦值后,使用onload監(jiān)聽加載圖片情況,加載完成后再繪制,不加onload就極可能繪制失敗。
image.onload = function () {
    canvas.drawImage(image, 0, 0, canvasWidth, canvasHeight)
}

7、關(guān)于性能優(yōu)化:由于你根本不知道用戶會拿多么大的圖片來進(jìn)行編輯,所以如果有9張圖片,每張圖片都編輯10次,那么存在內(nèi)存中的base64數(shù)據(jù)量就會非常龐大,在進(jìn)行頁面切換或者圖片涂鴉歷史撤銷的時候就可能造成頁面的卡頓,為了避免這種情況,在切換圖片之前,我只會存儲當(dāng)前圖片最后一張圖片的base64。
8、提交,保存之前判斷this.canvasArrBase中每一項的長度,大于0,則是有編輯過,否則被過濾掉。然后利用前面介紹上傳方法上傳到服務(wù)器,就OK啦!

總結(jié)

在學(xué)習(xí)canvas的道路上它總能給我?guī)硪恍@喜和驚訝,一些我們熟知的工具,例如:echart,高德地圖等無一不是基于canvas做出的。我曾經(jīng)有位同事是一位echart圖表大神,受他的影響,我逐漸對echart的威力有所領(lǐng)略,希望在這樣一個開源社區(qū)里和大家一起學(xué)習(xí),進(jìn)步。

到此這篇關(guān)于canvas如何實現(xiàn)多張圖片編輯的圖片編輯器的文章就介紹到這了,更多相關(guān)canvas圖片編輯器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:赤峰 金昌 聊城 阿壩 中山 萍鄉(xiāng) 盤錦 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《canvas如何實現(xiàn)多張圖片編輯的圖片編輯器》,本文關(guān)鍵詞  canvas,如何,實現(xiàn),多張,圖片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《canvas如何實現(xiàn)多張圖片編輯的圖片編輯器》相關(guān)的同類信息!
  • 本頁收集關(guān)于canvas如何實現(xiàn)多張圖片編輯的圖片編輯器的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    黄色一级在线视频| 欧美在线观看视频一区二区 | 日韩精品视频在线播放| 亚洲一区二区三区四区视频| 午夜精品中文字幕| 日韩三级一区二区| 久久久综合激的五月天| 亚洲美女在线视频| 久久久久久国产精品免费免费| 色噜噜狠狠一区二区三区狼国成人| 怡红院成永久免费人全部视频| 成人精品gif动图一区| 欧美成人一区二区三区片免费| 欧美整片在线观看| 国产伦精品一区二区三区四区视频_| 鲁丝一区二区三区| 国产成a人无v码亚洲福利| 亚洲成人精品视频在线观看| 国产欧美va欧美va香蕉在线| 香蕉久久久久久av成人| 日韩专区欧美专区| 欧美亚洲禁片免费| 91精品国产自产在线老师啪| 精品国产一二区| 天天干视频在线观看| 一区av在线播放| 久久久久久久久国产| aⅴ在线免费观看| 最近中文字幕在线观看| 亚洲综合在线观看视频| 欧美激情免费在线| 91在线播放网址| 久久精品国产v日韩v亚洲| 久久久com| 国产性生活大片| 91在线云播放| 久久久午夜视频| а 天堂 在线| 老司机午夜精品| 国产视频精品在线| 亚洲精品欧美精品| 丰满少妇xoxoxo视频| 亚洲成人午夜影院| 亚洲iv一区二区三区| 美国美女黄色片| 成人精品一区二区三区四区 | 日韩在线国产精品| 国产av无码专区亚洲精品| 好男人在线视频www| 日韩一级大片在线观看| 青青草视频在线视频| 国产精品福利电影| 精品丝袜一区二区三区| 黑人巨大猛交丰满少妇| 2019国产精品| 好吊妞www.84com只有这里才有精品| 国产91国语对白在线| 最近日韩中文字幕| 91精品在线观| 午夜69成人做爰视频| 激情久久av一区av二区av三区| 国产乱码精品一区二区三区不卡| 中文天堂资源在线| 欧美日韩性生活视频| 久久精品magnetxturnbtih| 999视频在线| 日韩欧美第一区| 欧美精品aaaa| 成人av片在线观看| 欧美在线观看网站| www.超碰97| 亚洲三级在线观看| 日本一区二区精品视频| 国产精品suv一区| 日韩三级高清在线| 2018国产在线| 成人久久18免费网站麻豆| 国产精品第二页| 天堂在线免费观看视频| 欧美一个色资源| 一个色综合久久| 国产精品国产三级国产aⅴ无密码| 好看的日韩精品| av网站在线观看免费| 久久九九精品99国产精品| 日本二区在线观看| 91黄色激情网站| 国产视频一区二区三区在线播放 | 亚洲乱码国产乱码精品精软件| 色多多国产成人永久免费网站| 欧美狂猛xxxxx乱大交3| 亚洲男人电影天堂| 无码人妻精品一区二区蜜桃百度| 精品一区二区三区视频| 成人免费视频网| 国产精品-色哟哟| 久久久久北条麻妃免费看| 九九热视频在线免费观看| 精品久久中文字幕| 国产三级日本三级在线播放| 欧美激情一区二区三区蜜桃视频| 日本欧美精品久久久| 美女www一区二区| 国产欧美精品va在线观看| 正在播放木下凛凛xv99| 久久激情视频久久| 久久久久久久蜜桃| 精品亚洲一区二区三区在线播放 | 成人高h视频在线| 日韩中文字幕在线观看视频| 亚洲精品一区av在线播放| 国产男女无遮挡猛进猛出| 亚洲国产精品久久久男人的天堂| 日韩福利影院| 韩国精品久久久| 国产人妖伪娘一区91| 精品国产一级片| 日韩av手机在线观看| 天堂网一区二区三区| 久久久极品av| 激情高潮到大叫狂喷水| 亚洲精品久久久久久久久久久| 中文字幕制服丝袜| 欧美亚洲综合网| 久久久久久久穴| 欧洲精品中文字幕| 日韩无码精品一区二区| 欧美美女喷水视频| 国产ts丝袜人妖系列视频| 亚洲国产日韩a在线播放性色| 北条麻妃69av| 成人免费在线播放视频| 欧美日韩亚洲一| 黑人欧美xxxx| 日本xxxx黄色| 欧美日韩中文字幕精品| youjizz.com日本| 欧美伊人久久久久久久久影院| 女尊高h男高潮呻吟| 日韩大陆毛片av| 欧美 日韩 精品| 久久久在线视频| 人人妻人人澡人人爽久久av| 国产精品久久久久久久久久久不卡 | 99久免费精品视频在线观看| 欧美亚洲精品日韩| 国产精品情趣视频| 亚洲另类第一页| 91麻豆精品国产91久久久久久久久| 东方伊人免费在线观看| 日日狠狠久久偷偷四色综合免费| 国产精品熟女久久久久久| 91久久精品一区二区别| 成人av网站在线观看免费| 91香蕉视频导航| 久久久国产一区二区三区| 在线观看日本视频| 91老司机在线| 26uuu色噜噜精品一区二区| 国产日韩av网站| 欧美性xxxx极品高清hd直播 | 国产午夜精品全部视频播放| 国产精品欧美激情在线| 国产精品最新在线观看| 国产一区二区三区高清播放| 免费在线观看毛片网站| 精品国产麻豆免费人成网站| 久久国产在线视频| 成人在线视频网| av一本久道久久综合久久鬼色| 三级a三级三级三级a十八发禁止| 亚洲成人xxx| 精品人妻一区二区三区浪潮在线 | 欧美高清激情brazzers| 日本黄色中文字幕| 欧美日韩高清在线一区| 亚洲成人av资源| 国产亚洲自拍av| 国产精品高清免费在线观看| 久久九九久精品国产免费直播| 日本美女高潮视频| 亚洲网在线观看| 欧美在线 | 亚洲| 中文字幕乱码一区二区三区| 欧美高清激情brazzers| 少妇高潮av久久久久久| 日本精品一区二区三区视频| 亚洲高清免费视频| 国产亚洲欧美久久久久| 114国产精品久久免费观看| 亚洲香蕉伊在人在线观| 精品亚洲乱码一区二区 | 久久成人久久鬼色| 亚洲欧美久久久久| 久久久99久久精品女同性| 国产一区二区三区视频在线播放| 91视频免费版污| 久久精品久久久久电影| 国精产品一区一区三区mba视频| 亚洲精品综合在线观看| 欧美黄色成人网| 日本一区二区三区久久久久久久久不 | 成人综合激情网| 天天操天天干天天操天天干| 日韩av免费在线| av不卡在线观看| 久久久久亚洲av无码a片| 99久久精品久久久久久ai换脸| 欧美日韩另类在线| 国产xxxx孕妇| 日韩a一级欧美一级| 国产成人激情视频| 亚洲一区二区三区四区五区黄| 日本妇乱大交xxxxx| 久久久久久久中文| 97视频在线观看网址| 亚洲精品亚洲人成人网在线播放| 免费看污视频的网站| 亚洲自偷自拍熟女另类| 欧美黑人国产人伦爽爽爽| 日韩理论在线观看| 中文字幕+乱码+中文乱码91| 成人在线观看黄| 国产成人精品免费视频| 欧美大片在线观看| 日本大胆欧美人术艺术动态| 欧美18—19性高清hd4k| 亚洲一区在线直播| 欧美猛少妇色xxxxx| 亚洲国产视频一区二区| 欧美一级视频免费| 91精品人妻一区二区| 日本一区二区精品| 美女国内精品自产拍在线播放| 亚洲三级小视频| 日韩在线视频第一页| 亚洲成人黄色av| 手机在线视频你懂的| 久久久久久久久91| 色综合久久久久综合体 | 毛片av一区二区| 欧美精品一区二区蜜桃| 欧美精品色婷婷五月综合| 成人免费福利在线| 精品亚洲va在线va天堂资源站| 国产欧美一区二区三区鸳鸯浴| 九九这里只有精品视频| 国产精品videossex国产高清 | 国自在线精品视频| 亚洲午夜三级在线| www.视频一区| 韩国一区二区三区| 蜜臀久久99精品久久久| 蜜桃色一区二区三区| 在线视频亚洲自拍| 欧美激情一级精品国产| 成人综合婷婷国产精品久久蜜臀| 中文字幕一区二区人妻视频| 亚洲男人在线天堂| 国产精品久久中文字幕| 51成人做爰www免费看网站| 中文字幕欧美专区| 日韩欧美在线中文字幕| 国产精品午夜福利| 午夜理伦三级做爰电影| 欧美一区二区影视| 7777精品视频| 欧美日韩精品福利| 国产欧美日韩综合精品一区二区| 性猛交xxxx乱大交孕妇印度| 四虎地址8848| 男女av免费观看| 国产精品免费一区二区| 日韩av片免费在线观看| 亚洲人成免费电影| 亚洲你懂的在线视频| 久久久久久免费网| 亚洲a一级视频| 国产精品美女高潮无套| 91久久久一线二线三线品牌| 欧美成人福利视频| 国产精品网友自拍| 精品欧美国产一区二区三区不卡| 永久看看免费大片| 国产精品久久久久久久久久久不卡 | 国产在线不卡av| 日日碰狠狠躁久久躁婷婷| 蜜臀精品一区二区| avav在线播放| 四川一级毛毛片| 国产熟妇搡bbbb搡bbbb| 国产精品自拍视频一区| 亚洲黄色片视频| 日本va欧美va瓶| 高清一区二区三区四区| 丁香亚洲综合激情啪啪综合| 久久婷婷国产综合国色天香| 蜜臀av一区二区三区| 精品一区二区三区在线视频| 久久精品国内一区二区三区| 草草视频在线播放| 伊人免费在线观看高清版| 中文字幕在线观看免费视频| 69精品久久久| 国产精品视频一区二区三| 久久国产精品国产精品| 天堂…中文在线最新版在线| 亚洲精品日韩成人| 久久草.com| 亚洲综合在线播放| 欧美诱惑福利视频| 国产成人精品最新| 国产精品久久97| 成人看片在线| 国产久一一精品| 爱情岛论坛亚洲入口| 国产噜噜噜噜噜久久久久久久久 | 精品无人区乱码1区2区3区在线| 日本伊人精品一区二区三区介绍| 欧美亚洲另类久久综合| 日韩欧美在线免费观看视频| 日本理论中文字幕| 亚洲视频久久久| 亚洲奶汁xxxx哺乳期| 欧美熟妇交换久久久久久分类| 成人黄页毛片网站| 国产一区二区影院| 久久亚洲精品国产精品紫薇| 久久久久久久久一| 国产午夜精品久久久久久久| 亚洲女同女同女同女同女同69| 中文字幕不卡一区| 亚洲精品日韩一| 在线免费一区三区| 精品久久久久久久久久久院品网| 午夜精品国产精品大乳美女| 91久久久久久久一区二区| 一本久久a久久精品vr综合| 欧美一区免费视频| 亚洲天堂第一区| 香蕉视频xxx| 18岁成人毛片| 中文无码精品一区二区三区| 国产精品第一页在线观看| 国产免费一区二区三区免费视频| 国产精品自拍av| 夜夜爽夜夜爽精品视频| 一区二区三区四区精品| 久久精品国产精品国产精品污 | 久久久久久激情| 久久精品女人天堂| 欧美韩日一区二区三区| 亚洲国产精品yw在线观看| 欧美日韩aaaa| 人人澡人人澡人人看欧美| av一区和二区| 人妻av无码专区| 成都免费高清电影| 精品无码av在线| 久久99热这里只有精品| 亚洲高清在线精品| 欧美麻豆精品久久久久久| 亚洲精品mp4| 97在线免费视频| 亚洲激情图片| 精品夜夜澡人妻无码av| 国产精品视频在线观看免费| 99久久精品99国产精品| 亚洲视频1区2区| 欧美在线制服丝袜| 久久亚洲国产精品| 久久99精品久久久久久秒播放器| 精品久久久噜噜噜噜久久图片| 欧美亚洲一二三区| 一级黄色录像毛片| 免费观看成年人视频| 91在线国产观看| 色婷婷激情久久| 国产精品自在线| 亚洲精品国产一区二区三区| xxxx18国产| 欧美日韩激情在线| 91免费版网站入口| 波多野吉衣中文字幕| www.爱爱.com| 亚洲国产成人tv| 国产成人精品视频在线| 免费在线观看的av网站| 亚洲精品卡一卡二| 男女男精品视频| 色婷婷激情一区二区三区| 在线播放国产精品| 蜜桃传媒一区二区| 国产在线观看中文字幕| 懂色av蜜臀av粉嫩av分享吧最新章节| 国产成人av福利| 91精品婷婷国产综合久久| 欧美日韩福利视频| 欧美日韩国产精品一区二区| www黄色av| av黄色在线播放| 路边理发店露脸熟妇泻火| 亚洲淫片在线视频| 高清中文字幕mv的电影| 精品一区二区成人精品| 亚洲天堂免费在线| 天天爱天天做天天操| 成人午夜精品视频| 91极品视觉盛宴| 日韩电影免费观看高清完整|