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

主頁 > 知識(shí)庫 > golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印

golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印

熱門標(biāo)簽:外呼系統(tǒng)用什么卡 excel地圖標(biāo)注分布數(shù)據(jù) 電話機(jī)器人軟件免費(fèi) 涿州代理外呼系統(tǒng) 外呼系統(tǒng)顯本地手機(jī)號(hào) 阿克蘇地圖標(biāo)注 壽光微信地圖標(biāo)注 百度地圖標(biāo)注后傳給手機(jī) 評(píng)價(jià)高的400電話辦理

添加水印示例

添加main文件

“watermark/main.go”

package main
import (
 "fmt"
 "watermark/textwatermark" 
)
func main() {
 SavePath := "./kaf"
 str := textwatermark.FontInfo{18, "努力向上", textwatermark.TopLeft, 20, 20, 255, 255, 0, 255}
 arr := make([]textwatermark.FontInfo, 0)
 arr = append(arr, str)
 str2 := textwatermark.FontInfo{Size: 24, Message: "努力向上,漲工資", Position: textwatermark.TopLeft, Dx: 20, Dy: 40, R: 255, G: 255, B: 0, A: 255}
 arr = append(arr, str2)
 //加水印圖片路徑
 // fileName := "123123.jpg"
 fileName := "17.gif"
 w := new(textwatermark.Water)
 w.Pattern = "2006/01/02"
 textwatermark.Ttf = "./wrzh.ttf" //字體路徑
 err := w.New(SavePath, fileName, arr)
 if err != nil {
  fmt.Println(err)
 }
}

golang添加水印包文件

"watermark/textwatermark.go"

package textwatermark
import (
	"errors"
	"fmt"
	"image"
	"image/color"
	"image/draw"
	"image/gif"
	"image/jpeg"
	"image/png"
	"io/ioutil"
	"math/rand"
	"os"
	"time"
	"github.com/golang/freetype"
)
// 水印的位置
const (
	TopLeft int = iota
	TopRight
	BottomLeft
	BottomRight
	Center
)
//字體路徑
var Ttf string
type Water struct {
	Pattern string //增加按時(shí)間劃分的子目錄:默認(rèn)沒有時(shí)間劃分的子目錄
}
func (w *Water) New(SavePath, fileName string, typeface []FontInfo) error {
	var subPath string
	subPath = w.Pattern
	dirs, err := createDir(SavePath, subPath)
	if err != nil {
		return err
	}
	imgfile, _ := os.Open(fileName)
	defer imgfile.Close()
	_, str, err := image.DecodeConfig(imgfile)
	if err != nil {
		return err
	}
	newName := fmt.Sprintf("%s%s.%s", dirs, getRandomString(10), str)
	if str == "gif" {
		err = gifFontWater(fileName, newName, typeface)
	} else {
		err = staticFontWater(fileName, newName, str, typeface)
	}
	return err
}
//gif圖片水印
func gifFontWater(file, name string, typeface []FontInfo) (err error) {
	imgfile, _ := os.Open(file)
	defer imgfile.Close()
	var err2 error
	gifimg2, _ := gif.DecodeAll(imgfile)
	gifs := make([]*image.Paletted, 0)
	x0 := 0
	y0 := 0
	yuan := 0
	for k, gifimg := range gifimg2.Image {
		img := image.NewNRGBA(gifimg.Bounds())
		if k == 0 {
			x0 = img.Bounds().Dx()
			y0 = img.Bounds().Dy()
		}
		fmt.Printf("%v, %v\n", img.Bounds().Dx(), img.Bounds().Dy())
		if k == 0  gifimg2.Image[k+1].Bounds().Dx() > x0  gifimg2.Image[k+1].Bounds().Dy() > y0 {
			yuan = 1
			break
		}
		if x0 == img.Bounds().Dx()  y0 == img.Bounds().Dy() {
			for y := 0; y  img.Bounds().Dy(); y++ {
				for x := 0; x  img.Bounds().Dx(); x++ {
					img.Set(x, y, gifimg.At(x, y))
				}
			}
			img, err2 = common(img, typeface) //添加文字水印
			if err2 != nil {
				break
			}
			//定義一個(gè)新的圖片調(diào)色板img.Bounds():使用原圖的顏色域,gifimg.Palette:使用原圖的調(diào)色板
			p1 := image.NewPaletted(gifimg.Bounds(), gifimg.Palette)
			//把繪制過文字的圖片添加到新的圖片調(diào)色板上
			draw.Draw(p1, gifimg.Bounds(), img, image.ZP, draw.Src)
			//把添加過文字的新調(diào)色板放入調(diào)色板slice
			gifs = append(gifs, p1)
		} else {
			gifs = append(gifs, gifimg)
		}
	}
	if yuan == 1 {
		return errors.New("gif: image block is out of bounds")
	} else {
		if err2 != nil {
			return err2
		}
		//保存到新文件中
		newfile, err := os.Create(name)
		if err != nil {
			return err
		}
		defer newfile.Close()
		g1 := gif.GIF{
			Image:     gifs,
			Delay:     gifimg2.Delay,
			LoopCount: gifimg2.LoopCount,
		}
		err = gif.EncodeAll(newfile, g1)
		return err
	}
}
//png,jpeg圖片水印
func staticFontWater(file, name, status string, typeface []FontInfo) (err error) {
	//需要加水印的圖片
	imgfile, _ := os.Open(file)
	defer imgfile.Close()
	var staticImg image.Image
	if status == "png" {
		staticImg, _ = png.Decode(imgfile)
	} else {
		staticImg, _ = jpeg.Decode(imgfile)
	}
	img := image.NewNRGBA(staticImg.Bounds())
	for y := 0; y  img.Bounds().Dy(); y++ {
		for x := 0; x  img.Bounds().Dx(); x++ {
			img.Set(x, y, staticImg.At(x, y))
		}
	}
	img, err = common(img, typeface) //添加文字水印
	if err != nil {
		return err
	}
	//保存到新文件中
	newfile, err := os.Create(name)
	if err != nil {
		return err
	}
	defer newfile.Close()
	if status == "png" {
		err = png.Encode(newfile, img)
	} else {
		err = jpeg.Encode(newfile, img, jpeg.Options{100})
	}
	return err
}
//添加文字水印函數(shù)
func common(img *image.NRGBA, typeface []FontInfo) (*image.NRGBA, error) {
	var err2 error
	//拷貝一個(gè)字體文件到運(yùn)行目錄
	fontBytes, err := ioutil.ReadFile(Ttf)
	if err != nil {
		err2 = err
		return nil, err2
	}
	font, err := freetype.ParseFont(fontBytes)
	if err != nil {
		err2 = err
		return nil, err2
	}
	errNum := 1
Loop:
	for _, t := range typeface {
		info := t.Message
		f := freetype.NewContext()
		f.SetDPI(108)
		f.SetFont(font)
		f.SetFontSize(t.Size)
		f.SetClip(img.Bounds())
		f.SetDst(img)
		f.SetSrc(image.NewUniform(color.RGBA{R: t.R, G: t.G, B: t.B, A: t.A}))
		//第一行的文字
		// pt := freetype.Pt(img.Bounds().Dx()-len(info)*4-20, img.Bounds().Dy()-100)
		first := 0
		two := 0
		switch int(t.Position) {
		case 0:
			first = t.Dx
			two = t.Dy + int(f.PointToFixed(t.Size)>>6)
		case 1:
			first = img.Bounds().Dx() - len(info)*4 - t.Dx
			two = t.Dy + int(f.PointToFixed(t.Size)>>6)
		case 2:
			first = t.Dx
			two = img.Bounds().Dy() - t.Dy
		case 3:
			first = img.Bounds().Dx() - len(info)*4 - t.Dx
			two = img.Bounds().Dy() - t.Dy
		case 4:
			first = (img.Bounds().Dx() - len(info)*4) / 2
			two = (img.Bounds().Dy() - t.Dy) / 2
		default:
			errNum = 0
			break Loop
		}
		// fmt.Printf("%v, %v, %v\n", first, two, info)
		pt := freetype.Pt(first, two)
		_, err = f.DrawString(info, pt)
		if err != nil {
			err2 = err
			break
		}
	}
	if errNum == 0 {
		err2 = errors.New("坐標(biāo)值不對(duì)")
	}
	return img, err2
}
//定義添加的文字信息
type FontInfo struct {
	Size     float64 //文字大小
	Message  string  //文字內(nèi)容
	Position int     //文字存放位置
	Dx       int     //文字x軸留白距離
	Dy       int     //文字y軸留白距離
	R        uint8   //文字顏色值RGBA中的R值
	G        uint8   //文字顏色值RGBA中的G值
	B        uint8   //文字顏色值RGBA中的B值
	A        uint8   //文字顏色值RGBA中的A值
}
//生成圖片名字
func getRandomString(lenght int) string {
	str := "0123456789abcdefghijklmnopqrstuvwxyz"
	bytes := []byte(str)
	bytesLen := len(bytes)
	result := []byte{}
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	for i := 0; i  lenght; i++ {
		result = append(result, bytes[r.Intn(bytesLen)])
	}
	return string(result)
}
//檢查并生成存放圖片的目錄
func createDir(SavePath, subPath string) (string, error) {
	var dirs string
	if subPath == "" {
		dirs = fmt.Sprintf("%s/", SavePath)
	} else {
		dirs = fmt.Sprintf("%s/%s/", SavePath, time.Now().Format(subPath))
	}
	_, err := os.Stat(dirs)
	if err != nil {
		err = os.MkdirAll(dirs, os.ModePerm)
		if err != nil {
			return "", err
		}
	}
	return dirs, nil
}

補(bǔ)充:golang基礎(chǔ)--image/draw渲染圖片、利用golang/freetype庫在圖片上生成文字

需求

在一張A4紙上,利用image/draw標(biāo)準(zhǔn)庫生成4張二維碼,和該二維碼的客戶信息

1、二維碼生成利用到的庫就是image/draw,通過draw.Draw進(jìn)行寫入

2、然后字體渲染利用了golang/freetype開源庫

https://github.com/golang/freetype/blob/master/example/freetype/main.go

安裝依賴

"github.com/golang/freetype"
"golang.org/x/image/font"

以上的golang.org/x/image/font需要翻墻,如果不能翻墻利用如下方法也可以:

邏輯

1、通過os.Create("dst.jpg")生成一個(gè)最終的圖片,該圖片上畫了4個(gè)二維碼,和頭部文字渲染

2、通過os.Open("/Users/zhiliao/zhiliao/gopro/go_safly/src/qr.png")去獲取本地的一個(gè)二維碼圖片路徑,然后通過png.Decode(file1)生成圖片

3、修改二維碼圖片的尺寸resize.Resize(314, 314, img, resize.Lanczos3)

4、通過image.NewRGBA(image.Rect(0, 0, 827, 1169))生成一個(gè)RGBA結(jié)構(gòu)體的矩形框,就好比是畫布的概念

5、選渲染頭部的客戶信息字體,需要一個(gè)中文字體庫,這個(gè)可以用Mac系統(tǒng)庫的中文字體,或者自行下載ttf字體庫,然后加載該字體

6、draw.Draw(jpg, jpg.Bounds(), bg, image.ZP, draw.Src)是進(jìn)行設(shè)置渲染的參數(shù),參數(shù)是畫布、渲染開始的地方、圖片來源、圖片參數(shù)、渲染模式

7、然后就是設(shè)置baseline,我這里去掉了,然后就是劃線,最后就是渲染字體,通過c.DrawString(s, pt)

8、接下來就是畫4個(gè)二維碼

draw.Draw(jpg, img.Bounds().Add(image.Pt(60, 150)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	draw.Draw(jpg, img.Bounds().Add(image.Pt(435, 150)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	draw.Draw(jpg, img.Bounds().Add(image.Pt(60, 610)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	draw.Draw(jpg, img.Bounds().Add(image.Pt(435, 610)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分

9、最后通過png.Encode(file, jpg)輸出到我們最終生成的圖片

效果圖

實(shí)例

package main
import (
	"flag"
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/golang/freetype"
	"github.com/nfnt/resize"
	"golang.org/x/image/font"
	"image"
	"image/draw"
	"image/png"
	"io/ioutil"
	"log"
	"net/http"
	"os"
	"strings"
)
var (
	dpi      = flag.Float64("dpi", 72, "screen resolution in Dots Per Inch")
	fontfile = flag.String("fontfile", "/Users/zhiliao/Downloads/ffffonts/simsun.ttf", "filename of the ttf font")
	hinting  = flag.String("hinting", "none", "none | full")
	size     = flag.Float64("size", 30, "font size in points")
	spacing  = flag.Float64("spacing", 1.5, "line spacing (e.g. 2 means double spaced)")
	wonb     = flag.Bool("whiteonblack", false, "white text on a black background")
)
var text = []string{
	"地支:沈陽市某區(qū)某鎮(zhèn)某街道某樓某",
	"姓名:王永飛",
	"電話:1232131231232",
}
func main() {
	file, err := os.Create("dst.jpg")
	if err != nil {
		fmt.Println(err)
	}
	defer file.Close()
	file1, err := os.Open("/Users/zhiliao/zhiliao/gopro/go_safly/src/qr.png")
	if err != nil {
		fmt.Println(err)
	}
	defer file1.Close()
	img, _ := png.Decode(file1)
	//尺寸
	img = resize.Resize(314, 314, img, resize.Lanczos3)
	jpg := image.NewRGBA(image.Rect(0, 0, 827, 1169))
	fontRender(jpg)
	draw.Draw(jpg, img.Bounds().Add(image.Pt(60, 150)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	draw.Draw(jpg, img.Bounds().Add(image.Pt(435, 150)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	draw.Draw(jpg, img.Bounds().Add(image.Pt(60, 610)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	draw.Draw(jpg, img.Bounds().Add(image.Pt(435, 610)), img, img.Bounds().Min, draw.Src) //截取圖片的一部分
	png.Encode(file, jpg)
}
func fontRender(jpg *image.RGBA)  {
	flag.Parse()
	fontBytes, err := ioutil.ReadFile(*fontfile)
	if err != nil {
		log.Println(err)
		return
	}
	f, err := freetype.ParseFont(fontBytes)
	if err != nil {
		log.Println(err)
		return
	}
	fg, bg := image.Black, image.White
	//ruler := color.RGBA{0xdd, 0xdd, 0xdd, 0xff}
	//if *wonb {
	//	fg, bg = image.White, image.Black
	//	ruler = color.RGBA{0x22, 0x22, 0x22, 0xff}
	//}
	draw.Draw(jpg, jpg.Bounds(), bg, image.ZP, draw.Src)
	c := freetype.NewContext()
	c.SetDPI(*dpi)
	c.SetFont(f)
	c.SetFontSize(*size)
	c.SetClip(jpg.Bounds())
	c.SetDst(jpg)
	c.SetSrc(fg)
	switch *hinting {
	default:
		c.SetHinting(font.HintingNone)
	case "full":
		c.SetHinting(font.HintingFull)
	}
	//Draw the guidelines.
	//for i := 0; i  200; i++ {
	//	jpg.Set(10, 10+i, ruler)
	//	jpg.Set(10+i, 10, ruler)
	//}
	// Draw the text.
	pt := freetype.Pt(200, 10+int(c.PointToFixed(*size)>>6))
	for _, s := range text {
		_, err = c.DrawString(s, pt)
		if err != nil {
			log.Println(err)
			return
		}
		pt.Y += c.PointToFixed(*size * *spacing)
	}
}
func Cors() gin.HandlerFunc {
	return func(c *gin.Context) {
		method := c.Request.Method      //請(qǐng)求方法
		origin := c.Request.Header.Get("Origin")        //請(qǐng)求頭部
		var headerKeys []string                             // 聲明請(qǐng)求頭keys
		for k, _ := range c.Request.Header {
			headerKeys = append(headerKeys, k)
		}
		headerStr := strings.Join(headerKeys, ", ")
		if headerStr != "" {
			headerStr = fmt.Sprintf("access-control-allow-origin, access-control-allow-headers, %s", headerStr)
		} else {
			headerStr = "access-control-allow-origin, access-control-allow-headers"
		}
		if origin != "" {
			c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
			c.Header("Access-Control-Allow-Origin", "*")        // 這是允許訪問所有域
			c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE,UPDATE")      //服務(wù)器支持的所有跨域請(qǐng)求的方法,為了避免瀏覽次請(qǐng)求的多次'預(yù)檢'請(qǐng)求
			//  header的類型
			c.Header("Access-Control-Allow-Headers", "Authorization, Content-Length, X-CSRF-Token, Token,session,X_Requested_With,Accept, Origin, Host, Connection, Accept-Encoding, Accept-Language,DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Pragma")
			//              允許跨域設(shè)置                                                                                                      可以返回其他子段
			c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers,Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma,FooBar")      // 跨域關(guān)鍵設(shè)置 讓瀏覽器可以解析
			c.Header("Access-Control-Max-Age", "172800")        // 緩存請(qǐng)求信息 單位為秒
			c.Header("Access-Control-Allow-Credentials", "false")       //  跨域請(qǐng)求是否需要帶cookie信息 默認(rèn)設(shè)置為true
			c.Set("content-type", "application/json")       // 設(shè)置返回格式是json
		}
		//放行所有OPTIONS方法
		if method == "OPTIONS" {
			c.JSON(http.StatusOK, "Options Request!")
		}
		// 處理請(qǐng)求
		c.Next()        //  處理請(qǐng)求
	}
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang中切片copy復(fù)制和等號(hào)復(fù)制的區(qū)別介紹
  • go切片的copy和view的使用方法
  • go語言中切片與內(nèi)存復(fù)制 memcpy 的實(shí)現(xiàn)操作
  • Go語言中的UTF-8實(shí)現(xiàn)
  • Go語言帶緩沖的通道實(shí)現(xiàn)
  • go語言求任意類型切片的長度操作
  • Go語言切片前或中間插入項(xiàng)與內(nèi)置copy()函數(shù)詳解

標(biāo)簽:吐魯番 雞西 欽州 重慶 銅川 汕頭 梅河口 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印》,本文關(guān)鍵詞  golang,中,實(shí)現(xiàn),給,gif,png,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美一级免费片| 亚洲高清不卡在线观看| 大地资源网在线观看免费官网| 亚洲国产裸拍裸体视频在线观看乱了| 黄色一级片中国| 久久精品日产第一区二区三区乱码| 无码av免费一区二区三区试看| 久久久久噜噜噜亚洲熟女综合| 91久久精品国产91久久性色tv| 亚洲国产日韩av| 91女人18毛片水多国产| 妞干网在线观看视频| 色偷偷综合社区| 91啪亚洲精品| 国产精久久一区二区三区| 成人免费看片网站| 欧美一区二区三区啪啪| 久久狠狠婷婷| mm131美女视频| 91一区二区三区| 欧美色电影在线| 激情五月婷婷综合| 国产wwwwxxxx| 久久天天东北熟女毛茸茸| 日韩在线观看视频免费| 国产清纯在线一区二区www| 国产一级做a爱免费视频| 亚洲欧美一二三| 91sa在线看| 在线看国产一区二区| 久久三级福利| 久久久亚洲av波多野结衣| 国产九色精品| 91精品国产一区二区人妖| 国产一区二区伦理片| 久久黄色免费网站| 色综合久久久久无码专区| 日本一区二区不卡| 欧美精品在线观看一区二区| 韩国成人福利片在线播放| 久久久久久久久久久久国产| 波多野结衣乳巨码无在线| 国产裸体写真av一区二区 | 亚洲精品第一区二区三区| 日韩中文综合网| 亚洲va在线va天堂| 精品一区二区在线播放| 亚洲综合一二三| gai在线观看免费高清| 国产一区二区不卡视频| 一区二区三区黄色| 狠狠躁夜夜躁久久躁别揉| 国产精品18久久久| 亚洲色成人www永久网站| 手机在线成人免费视频| 91牛牛免费视频| 在线观看国产精品日韩av| 欧美日韩视频在线| 2022国产精品视频| 99视频在线观看免费| 娇妻高潮浓精白浆xxⅹ| 99热都是精品| 成人av资源网| 欧美二区在线播放| 欧美精品色一区二区三区| 欧美韩国日本综合| 国产精品久久久久久久妇| 日韩av加勒比| 免费cad大片在线观看| 国产人妖伪娘一区91| 久久精品国产一区| 精品日产卡一卡二卡麻豆| 亚洲日本欧美天堂| 国产成人精品三级麻豆| 国产精品人人妻人人爽| 国产小视频在线观看免费| 成熟妇人a片免费看网站| 欧美一级黄色影院| 欧洲xxxxx| 欧美日韩大片一区二区三区| 欧美一级大片在线免费观看| 一区二区三区四区精品| 精品国产一区二区三区久久久蜜月| 狠狠色香婷婷久久亚洲精品| 欧美激情中文字幕| 国产精品一品二品| 人妻少妇精品无码专区| 久草热在线观看| 国产十六处破外女视频| 老熟妇精品一区二区三区| 污视频网址在线观看| 成人性生生活性生交12| 青青草国产免费| 一区国产精品| 日韩高清专区| 麻豆av一区二区三区久久| 国产精品一区二区免费| 91久久大香伊蕉在人线| 国产精品久久999| 奇米4444一区二区三区 | 伊是香蕉大人久久| 亚洲精品久久久久久下一站| 亚洲第一区在线观看| 日韩小视频在线观看专区| 精品日本一线二线三线不卡| 欧美性视频一区二区三区| 欧美午夜精品久久久| 一本一道综合狠狠老| 欧美视频一区二区三区在线观看| 欧美一区二区私人影院日本| 国产精品麻豆99久久久久久| 久久老女人爱爱| 亚洲视频每日更新| 午夜久久久影院| 日韩欧美在线看| 制服丝袜成人动漫| 日韩成人性视频| 色999日韩欧美国产| 久久久精品999| 欧美最近摘花xxxx摘花| 5278欧美一区二区三区| 国产精品久久一| 精品日本一区二区三区| 国产成年人在线观看| 日av中文字幕| 免费欧美一级片| 欧美福利在线视频| 国产一级aa大片毛片| 亚洲字幕av一区二区三区四区| 丰满熟妇人妻中文字幕| 成人黄色av电影| 亚洲超碰精品一区二区| 6080亚洲精品一区二区| 久久影院资源网| 成人欧美一区二区三区黑人| 一区二区三区四区欧美| 天堂在线资源视频| 欧美视频一区二区在线| av网站在线免费看| 国产一区二区在线影院| 久久久久久黄色| 色综合色狠狠天天综合色| 亚洲男人的天堂网站| 97在线看免费观看视频在线观看| 极品日韩久久| 在线免费观看av网| 日本一区二区三区精品| 国产一区三区三区| 大荫蒂欧美视频另类xxxx| 中文字幕欧美视频在线| 91青青草免费在线看| 国产主播在线看| 午夜国产福利一区二区| 美女尤物久久精品| 亚洲一区二区精品视频| 日韩中文字幕视频在线| 麻豆久久久av免费| 国产xxxxhd| 亚洲av成人精品一区二区三区 | 免费不卡的av| 在线视频播放大全| 国产欧美视频一区二区三区| 亚洲精品美女在线观看| 粉嫩av一区二区三区免费观看| 日本一区二区三区免费观看| 日韩欧美在线免费观看视频| 日本亚洲欧美在线| 9色porny自拍视频一区二区| 日韩一区二区在线看片| 日韩av123| 成人在线视频一区二区三区| 亚洲综合第一区| 日韩一级片免费| 图片区小说区国产精品视频| 久久人人爽人人爽人人片av高清| 国产人妻人伦精品| 国产无码精品一区二区| 91论坛在线播放| 亚洲视频在线观看视频| 亚洲不卡一卡2卡三卡4卡5卡精品| 永久免费成人代码| 国产一区二区美女诱惑| 精品区一区二区| 国产一级特黄a大片99| 亚洲熟妇一区二区三区| 国产美女在线观看一区| 精品国产sm最大网站| 免费成人在线观看av| ass极品国模人体欣赏| av影院午夜一区| 神马国产精品影院av| av免费观看大全| 国产无遮挡又黄又爽在线观看| 久久你懂得1024| 欧美另类在线观看| 久久久久久久久久久免费视频| 国产a级免费视频| 欧美日韩黄视频| 视频一区亚洲| 成年人视频免费| 91福利在线导航| 奇米影视首页 狠狠色丁香婷婷久久综合| 国产精品理论在线| 26uuu国产一区二区三区| 国产综合在线视频| 国产精品成人无码专区| 国产毛片精品一区| 播播国产欧美激情| 天堂在线中文在线| 狠狠色狠狠色合久久伊人| 欧美一级理论性理论a| 一区二区在线观看网站| 毛片基地在线观看| 精品国产91久久久久久| 蜜桃日韩视频| 亚洲GV成人无码久久精品| 欧美日韩国产精品一区二区三区四区 | 国产精品一区二区三区在线免费观看 | 国产福利一区二区三区视频在线 | 色阁综合伊人av| 在线观看亚洲色图| 国产精品亚洲午夜一区二区三区| 国产一区二区三区在线播放免费观看| 国产成人在线免费看| 久久久久欧美精品| 久久97精品久久久久久久不卡| 黄色正能量网站| 亚洲精品国产品国语在线app| 亚洲iv一区二区三区| 国产五月天婷婷| 日韩美女一区二区三区四区| 精品久久久久久中文字幕2017| 国产白丝精品91爽爽久久| 日韩美女免费观看| 亚洲女人久久久| 欧美日韩免费看| 性欧美18一19内谢| 麻豆久久久久久久| 国产成人精品在线观看| 免费人成视频在线| 欧美成人高清电影在线| 亚洲色图欧美自拍| 国产精品久久久久久久久免费相片 | 911福利视频| 综合中文字幕亚洲| 午夜视频久久久| 麻豆精品久久久| 日本欧美黄网站| 亚洲自拍一区在线观看| 波霸ol色综合久久| 久久久久久久黄色| 亚洲精品美女久久久| 中文字幕制服丝袜| 狠狠久久五月精品中文字幕| 成年人免费大片| 一区二区三区四区乱视频| 中文字幕第一页亚洲| 91麻豆精品秘密| 国产区一区二区三区| 蜜臀久久99精品久久久| 国产精品欧美一区二区| 99在线小视频| 国产精品免费久久久久影院| 国产亲伦免费视频播放| 久久久人成影片一区二区三区观看| 日韩av在线播| 欧美极品少妇xxxxⅹ裸体艺术| 日韩在线视频不卡| 欧美国产精品人人做人人爱| 久草手机在线观看| 美日韩在线视频| 中国女人一级一次看片| 91精品在线播放| 国产成人综合在线播放| 99亚洲精品视频| 国产无遮挡一区二区三区毛片日本| 桥本有菜av在线| 久久中文字幕电影| 国产日韩欧美大片| 亚洲品质自拍视频| www.com黄色片| 欧美性生活久久| 精品在线观看一区| 久久久精品亚洲| 精品人妻无码一区二区色欲产成人 | 一本色道久久综合精品竹菊| 污污污www精品国产网站| 亚洲精品一区二区三区精华液| 日本午夜精品理论片a级app发布| 美女av一区二区三区| 精品人妻伦一区二区三区久久| 91精品国自产在线观看| 成人免费高清在线观看| 久久av高潮av| 色国产精品一区在线观看| 又嫩又硬又黄又爽的视频| 97在线视频免费| 91在线你懂得| 国产香蕉精品视频| 国产精品久久久久久久久久| 国产日本欧洲亚洲| asian性开放少妇pics| 色悠悠久久88| 日韩av中文字幕一区二区| 可以免费看的黄色网址| 欧美日韩亚洲丝袜制服| 久久网免费视频| 成人中文字幕+乱码+中文字幕| 国产精品色婷婷| 亚洲中文字幕无码av| 国产亚洲精品va在线观看| 亚洲精品福利网站| 四虎4hu永久免费入口| 欧美日韩一区二区在线观看| 四虎影院在线免费播放| 日韩欧美一区二区三区四区五区| 亚洲卡通欧美制服中文| 九九热视频精品| 久久av二区| 欧美日韩性生活视频| 国产区一区二区三| 色涩成人影视在线播放| 欧美中文字幕一区二区三区亚洲 | 在线电影中文日韩| 精久久久久久久久久久| 天堂av手机在线| 欧美激情视频一区二区三区不卡| 成人深夜福利app| 性欧美18—19sex性高清| 日本一区二区在线播放| 中文字幕av资源一区| 午夜爱爱毛片xxxx视频免费看| 95av在线视频| 色先锋aa成人| 精品国产亚洲AV| 青青青国产在线观看| 丝袜亚洲另类欧美重口| 国产精选一区二区三区| 免费看91的网站| 精品国产一区二区三区四区精华| 91精品国产一区二区| 国产精品99久久不卡二区| 成人高潮免费视频| 豆国产97在线| 中文字幕人妻一区| 九九热视频这里只有精品| 国产日韩高清在线| 亚洲国产精品久| 中文字幕久精品免| 国产一区二区三区在线视频| 狠狠色综合网站久久久久久久| 亚洲福利一二三区| 国产91免费看| 最近中文字幕无免费| 久久伊人资源站| 日韩精品视频观看| 成人精品鲁一区一区二区| 国产男女猛烈无遮挡在线喷水| 少妇高潮流白浆| 欧美寡妇偷汉性猛交| 亚洲成av人片一区二区| 午夜在线视频观看| 欧美老熟妇乱大交xxxxx| 深夜福利成人| www.亚洲成人| 狠狠躁夜夜躁人人爽超碰91| 素人fc2av清纯18岁| 热这里只有精品| 国模极品一区二区三区| 午夜精品一区二区三区免费视频| 人妻精品一区一区三区蜜桃91| 91精品人妻一区二区| 偷拍视频一区二区| 久久久久久久激情视频| 欧美日韩亚洲不卡| www.视频一区| 国产又大又黄的视频| 亚洲精品中文字幕在线播放| 亚洲一区二区三区精品在线观看| 欧美不卡视频一区发布| 欧美精品色综合| 一区二区三区不卡在线观看 | 国产精品美女久久久久久久网站| 亚洲人成色777777老人头| 亚洲精品午夜国产va久久成人| 波多野结衣av在线免费观看 | 国产美女精品免费电影| 欧美成人三级视频网站| 欧美性猛交xxxxxxxx| 成人免费毛片嘿嘿连载视频| av毛片在线免费观看| 中文字幕电影av| 成人在线视频免费播放| 日日碰狠狠丁香久燥| 99国产在线视频| 97成人精品视频在线观看| 欧美激情一区二区久久久| 超碰日本道色综合久久综合| www.xxxx精品| 久久99精品久久久久久噜噜| 久久久精品影院| 中文字幕亚洲欧美日韩2019| 亚洲人午夜色婷婷| 日韩av中文字幕在线播放| 亚洲成人精品av| 亚洲社区在线观看| 最近免费中文字幕视频2019| 日韩电视剧免费观看网站| 精品免费国产一区二区三区四区| 日韩欧美国产午夜精品|