久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java使用jar包生成二維碼的示例代碼

瀏覽:83日期:2022-08-20 17:01:54

使用java進(jìn)行二維碼的生成與讀取使用到了谷歌的zxing.jar

第一步 導(dǎo)入,maven依賴(lài)或者下載指定jar包

<!-- https://mvnrepository.com/artifact/com.google.zxing/javase --><dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.2.1</version></dependency>

第二步 書(shū)寫(xiě)二維碼生成器的工具類(lèi)

import java.awt.Color;import java.io.File;import java.util.Hashtable;import com.google.zxing.EncodeHintType;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;/** * QRCode 生成器的格式 * * @author ai(ahx.show) */public class QRCodeFormat { /** 圖片大小 */ private int size; /** 內(nèi)容編碼格式 */ private String encode; /** 錯(cuò)誤修正等級(jí) (Error Collection Level) */ private ErrorCorrectionLevel errorCorrectionLevel; /** 錯(cuò)誤修正等級(jí)的具體值 */ private double errorCorrectionLevelValue; /** 前景色 */ private Color foreGroundColor; /** 背景色 */ private Color backGroundColor; /** 圖片的文件格式 */ private String imageFormat; /** 圖片的外邊距大小 (Quiet Zone) */ private int margin; /** 提供給編碼器額外的參數(shù) */ private Hashtable<EncodeHintType, Object> hints; /** 需要添加的圖片 */ private File icon; /** * 創(chuàng)建一個(gè)帶有默認(rèn)值的 QRCode 生成器的格式。默認(rèn)值如下 * * <ul> * <li>圖片大小: 256px</li> * <li>內(nèi)容編碼格式: UTF-8</li> * <li>錯(cuò)誤修正等級(jí): Level M (有15% 的內(nèi)容可被修正)</li> * <li>前景色: 黑色</li> * <li>背景色: 白色</li> * <li>輸出圖片的文件格式: png</li> * <li>圖片空白區(qū)域大小: 0個(gè)單位</li> * </ul> * * @return QRCode 生成器格式 */ public static QRCodeFormat NEW() { return new QRCodeFormat(); } private QRCodeFormat() { this.size = 256; this.encode = 'utf-8'; this.errorCorrectionLevel = ErrorCorrectionLevel.M; this.errorCorrectionLevelValue = 0.15; this.foreGroundColor = Color.BLACK; this.backGroundColor = Color.WHITE; this.imageFormat = 'png'; this.margin = 0; this.hints = new Hashtable<EncodeHintType, Object>(); } /** * 返回圖片的大小。 * * @return 圖片的大小 */ public int getSize() { return this.size; } /** * 設(shè)置圖片的大小。圖片的大小等于實(shí)際內(nèi)容與外邊距的值(建議設(shè)置成偶數(shù)值)。 * * @param size * 圖片的大小 * * @return QRCode生成器的格式 */ public QRCodeFormat setSize(int size) { this.size = size; return this; } /** * 返回內(nèi)容編碼格式。 * * @return 內(nèi)容編碼格式 */ public String getEncode() { return encode; } /** * 設(shè)置內(nèi)容編碼格式。 * * @param encode * 內(nèi)容編碼格式 * * @return QRCode生成器的格式 */ public QRCodeFormat setEncode(String encode) { this.encode = encode; return this; } /** * 返回錯(cuò)誤修正等級(jí)。 * * @return 錯(cuò)誤修正等級(jí) */ public ErrorCorrectionLevel getErrorCorrectionLevel() { return errorCorrectionLevel; } /** * 返回錯(cuò)誤修正等級(jí)的具體值。 * * @return 錯(cuò)誤修正等級(jí)的具體值 */ public double getErrorCorrectionLevelValue() { return errorCorrectionLevelValue; } /** * 設(shè)置錯(cuò)誤修正等級(jí)。其定義如下 * * <ul> * <li>L: 有 7% 的內(nèi)容可被修正</li> * <li>M: 有15% 的內(nèi)容可被修正</li> * <li>Q: 有 25% 的內(nèi)容可被修正</li> * <li>H: 有 30% 的內(nèi)容可被修正</li> * </ul> * * @param errorCorrectionLevel * 錯(cuò)誤修正等級(jí) * * @return QRCode生成器的格式 */ public QRCodeFormat setErrorCorrectionLevel(char errorCorrectionLevel) { switch (Character.toUpperCase(errorCorrectionLevel)) { case ’L’: this.errorCorrectionLevel = ErrorCorrectionLevel.L; this.errorCorrectionLevelValue = 0.07; break; case ’M’: this.errorCorrectionLevel = ErrorCorrectionLevel.M; this.errorCorrectionLevelValue = 0.15; break; case ’Q’: this.errorCorrectionLevel = ErrorCorrectionLevel.Q; this.errorCorrectionLevelValue = 0.25; break; case ’H’: this.errorCorrectionLevel = ErrorCorrectionLevel.H; this.errorCorrectionLevelValue = 0.3; break; default: this.errorCorrectionLevel = ErrorCorrectionLevel.M; } return this; } /** * 返回前景色。 * * @return 前景色 */ public Color getForeGroundColor() { return foreGroundColor; } /** * 設(shè)置前景色。值為十六進(jìn)制的顏色值(與 CSS 定義顏色的值相同,不支持簡(jiǎn)寫(xiě)),可以忽略「#」符號(hào)。 * * @param foreGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setForeGroundColor(String foreGroundColor) { try { this.foreGroundColor = getColor(foreGroundColor); } catch (NumberFormatException e) { this.foreGroundColor = Color.BLACK; } return this; } /** * 設(shè)置前景色。 * * @param foreGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setForeGroundColor(Color foreGroundColor) { this.foreGroundColor = foreGroundColor; return this; } /** * 返回背景色。 * * @return 背景色 */ public Color getBackGroundColor() { return backGroundColor; } /** * 設(shè)置背景色。值為十六進(jìn)制的顏色值(與 CSS 定義顏色的值相同,不支持簡(jiǎn)寫(xiě)),可以忽略「#」符號(hào)。 * * @param backGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setBackGroundColor(String backGroundColor) { try { this.backGroundColor = getColor(backGroundColor); } catch (NumberFormatException e) { this.backGroundColor = Color.WHITE; } return this; } /** * 設(shè)置背景色。 * * @param backGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setBackGroundColor(Color backGroundColor) { this.backGroundColor = backGroundColor; return this; } /** * 返回圖片的文件格式。 * * @return 圖片的文件格式 */ public String getImageFormat() { return imageFormat.toUpperCase(); } /** * 設(shè)置圖片的文件格式 。 * * @param imageFormat * 圖片的文件格式 * * @return QRCode生成器的格式 */ public QRCodeFormat setImageFormat(String imageFormat) { this.imageFormat = imageFormat; return this; } /** * 返回圖片的外邊距大小。 * * @return 圖片的外邊距大小 */ public int getMargin() { return margin; } /** * 設(shè)置圖片的外邊距大小 。 * * @param margin * 圖片的外邊距大小 * * @return QRCode生成器的格式 */ public QRCodeFormat setMargin(int margin) { this.margin = margin; return this; } /** * 返回提供給編碼器額外的參數(shù)。 * * @return 提供給編碼器額外的參數(shù) */ public Hashtable<EncodeHintType, ?> getHints() { hints.clear(); hints.put(EncodeHintType.ERROR_CORRECTION, getErrorCorrectionLevel()); hints.put(EncodeHintType.CHARACTER_SET, getEncode()); hints.put(EncodeHintType.MARGIN, getMargin()); return hints; } /** * 返回添加的圖片。 * * @return 添加的圖片 */ public File getIcon() { return icon; } /** * 設(shè)置添加的圖片 。 * * @param icon * 添加的圖片 * * @return QRCode生成器的格式 */ public QRCodeFormat setIcon(File icon) { this.icon = icon; return this; } /** * 設(shè)置添加的圖片 。 * * @param iconPath * 添加的圖片 * * @return QRCode生成器的格式 */ public QRCodeFormat setIcon(String iconPath) { return setIcon(new File(iconPath)); } private Color getColor(String hexString) { if (hexString.charAt(0) == ’#’) { return new Color(Long.decode(hexString).intValue()); } else { return new Color(Long.decode('0xFF' + hexString).intValue()); } }}

第三步 使用生成器對(duì)象按照指定格式進(jìn)行生成讀取二維碼

import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.color.ColorSpace;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.nio.charset.Charset; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.ChecksumException;import com.google.zxing.FormatException;import com.google.zxing.LuminanceSource;import com.google.zxing.NotFoundException;import com.google.zxing.Result;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.BitMatrix;import com.google.zxing.common.HybridBinarizer;import com.google.zxing.qrcode.QRCodeReader;import com.google.zxing.qrcode.QRCodeWriter; /** * QRCode 處理器 * @ClassName: QRCode * @Description: TODO * @author: ai(ahx.show) * @date: 2016年12月18日 下午1:22:50 */public final class QRCode { /** QRCode 生成器格式 */ private QRCodeFormat format = null; /** 生成的 QRCode 圖像對(duì)象 */ private BufferedImage qrcodeImage = null; /** 生成的 QRCode 圖片文件 */ private File qrcodeFile = null; /** * 返回生成的 QRCode 圖像對(duì)象 * * @return 生成的 QRCode 圖像對(duì)象 */ public BufferedImage getQrcodeImage() { return qrcodeImage; } /** * 返回生成的 QRCode 圖片文件 * * @return 生成的 QRCode 圖片文件 */ public File getQrcodeFile() { return qrcodeFile; } private QRCode() { } /** * 使用帶默認(rèn)值的「QRCode 生成器格式」來(lái)創(chuàng)建一個(gè) QRCode 處理器。 * * @param content * 所要生成 QRCode 的內(nèi)容 * * @return QRCode 處理器 */ public static QRCode NEW(final String content) { return NEW(content, QRCodeFormat.NEW()); } /** * 使用指定的「QRCode 生成器格式」來(lái)創(chuàng)建一個(gè) QRCode 處理器。 * * @param content * 所要生成 QRCode 的內(nèi)容 * @param format * QRCode 生成器格式 * * @return QRCode 處理器 */ public static QRCode NEW(final String content, QRCodeFormat format) { QRCode qrcode = new QRCode(); qrcode.format = format; qrcode.qrcodeImage = toQRCode(content, format); return qrcode; } /** * 把指定的內(nèi)容生成為一個(gè) QRCode 的圖片,之后保存到指定的文件中。 * * @param f * 指定的文件 * * @return QRCode 處理器 */ public QRCode toFile(String f) { return toFile(new File(f), this.format.getIcon()); } /** * 把指定的內(nèi)容生成為一個(gè) QRCode 的圖片,之后保存到指定的文件中。 * * @param qrcodeFile * 指定的文件 * * @return QRCode 處理器 */ public QRCode toFile(File qrcodeFile) { return toFile(qrcodeFile, this.format.getIcon()); } /** * 把指定的內(nèi)容生成為一個(gè) QRCode 的圖片,并在該圖片中間添加上指定的圖片;之后保存到指定的文件內(nèi)。 * * @param qrcodeFile * QRCode 圖片生成的指定的文件 * @param appendFile * 需要添加的圖片。傳入的文件路徑如果沒(méi)有(null 或者為空)的時(shí)候?qū)⒑雎栽搮?shù) * * @return QRCode 處理器 */ public QRCode toFile(String qrcodeFile, String appendFile) { if (null == appendFile || appendFile.length() == 0) { return toFile(new File(qrcodeFile)); } return toFile(new File(qrcodeFile), new File(appendFile)); } /** * 把指定的內(nèi)容生成為一個(gè) QRCode 的圖片,并在該圖片中間添加上指定的圖片;之后保存到指定的文件內(nèi)。 * * @param qrcodeFile * QRCode 圖片生成的指定的文件 * @param appendFile * 需要添加的圖片。傳入的圖片不存在的時(shí)候?qū)⒑雎栽搮?shù) * * @return QRCode 處理器 */ public QRCode toFile(File qrcodeFile, File appendFile) { try { if (!qrcodeFile.exists()) {qrcodeFile.getParentFile().mkdirs();qrcodeFile.createNewFile(); } if (null != appendFile && appendFile.isFile() && appendFile.length() != 0) {appendImage(ImageIO.read(appendFile)); } if (!ImageIO.write(this.qrcodeImage, getSuffixName(qrcodeFile), qrcodeFile)) {throw new RuntimeException('Unexpected error writing image'); } } catch (IOException e) { throw new RuntimeException(e); } this.qrcodeFile = qrcodeFile; return this; } private void appendImage(BufferedImage appendImage) { appendImage(this.qrcodeImage, appendImage, this.format); } private static void appendImage(BufferedImage qrcodeImage, BufferedImage appendImage, QRCodeFormat format) { int baseWidth = qrcodeImage.getWidth(); int baseHeight = qrcodeImage.getHeight(); // 計(jì)算 icon 的最大邊長(zhǎng) // 公式為 二維碼面積*錯(cuò)誤修正等級(jí)*0.4 的開(kāi)方 int maxWidth = (int) Math.sqrt(baseWidth * baseHeight * format.getErrorCorrectionLevelValue() * 0.4); int maxHeight = maxWidth; // 獲取 icon 的實(shí)際邊長(zhǎng) int roundRectWidth = (maxWidth < appendImage.getWidth()) ? maxWidth : appendImage.getWidth(); int roundRectHeight = (maxHeight < appendImage.getHeight()) ? maxHeight : appendImage.getHeight(); BufferedImage roundRect = new BufferedImage(roundRectWidth, roundRectHeight, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = roundRect.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(Color.WHITE); g2.fillRoundRect(0, 0, roundRectWidth, roundRectHeight, 27, 27); g2.setComposite(AlphaComposite.SrcAtop); g2.drawImage(appendImage, 0, 0, roundRectWidth, roundRectHeight, null); g2.dispose(); Graphics gc = qrcodeImage.getGraphics(); gc.setColor(format.getBackGroundColor()); gc.drawImage(roundRect, (baseWidth - roundRectWidth) / 2, (baseHeight - roundRectHeight) / 2, null); gc.dispose(); } /** * 使用帶默認(rèn)值的「QRCode 生成器格式」,把指定的內(nèi)容生成為一個(gè) QRCode 的圖像對(duì)象。 * * @param content * 所需生成 QRCode 的內(nèi)容 * * @return QRCode 的圖像對(duì)象 */ public static BufferedImage toQRCode(String content) { return toQRCode(content, null); } /** * 使用指定的「QRCode生成器格式」,把指定的內(nèi)容生成為一個(gè) QRCode 的圖像對(duì)象。 * * @param content * 所需生成 QRCode 的內(nèi)容 * @param format * QRCode 生成器格式 * @return QRCode 的圖像對(duì)象 */ public static BufferedImage toQRCode(String content, QRCodeFormat format) { if (format == null) { format = QRCodeFormat.NEW(); } content = new String(content.getBytes(Charset.forName(format.getEncode()))); BitMatrix matrix = null; try { matrix = new QRCodeWriter().encode(content,BarcodeFormat.QR_CODE,format.getSize(),format.getSize(),format.getHints()); } catch (WriterException e) { throw new RuntimeException(e); } int width = matrix.getWidth(); int height = matrix.getHeight(); int fgColor = format.getForeGroundColor().getRGB(); int bgColor = format.getBackGroundColor().getRGB(); BufferedImage image = new BufferedImage(width, height, ColorSpace.TYPE_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) {image.setRGB(x, y, matrix.get(x, y) ? fgColor : bgColor); } } File appendFile = format.getIcon(); if (null != appendFile && appendFile.isFile() && appendFile.length() != 0) { BufferedImage appendImage = null; try {appendImage = ImageIO.read(appendFile); } catch (IOException e) {throw new RuntimeException(e); } appendImage(image, appendImage, format); } return image; } /** * 從指定的 QRCode 圖片文件中解析出其內(nèi)容。 * * @param qrcodeFile * QRCode 文件 * * @return QRCode 中的內(nèi)容 */ public static String from(String qrcodeFile) { if (qrcodeFile.startsWith('http://') || qrcodeFile.startsWith('https://')) { try {return from(new URL(qrcodeFile)); } catch (MalformedURLException e) {throw new RuntimeException(e); } } else { return from(new File(qrcodeFile)); } } /** * 從指定的 QRCode 圖片文件中解析出其內(nèi)容。 * * @param qrcodeFile * QRCode 圖片文件 * * @return QRCode 中的內(nèi)容 */ public static String from(File qrcodeFile) { try { BufferedImage image = ImageIO.read(qrcodeFile); return from(image); } catch (IOException e) { throw new RuntimeException(e); } } /** * 從指定的 QRCode 圖片鏈接中解析出其內(nèi)容。 * * @param qrcodeUrl * QRCode 圖片鏈接 * * @return QRCode 中的內(nèi)容 */ public static String from(URL qrcodeUrl) { try { BufferedImage image = ImageIO.read(qrcodeUrl); return from(image); } catch (IOException e) { throw new RuntimeException(e); } } /** * 從指定的 QRCode 圖像對(duì)象中解析出其內(nèi)容。 * * @param qrcodeImage * QRCode 圖像對(duì)象 * * @return QRCode 中的內(nèi)容 */ public static String from(BufferedImage qrcodeImage) { LuminanceSource source = new BufferedImageLuminanceSource(qrcodeImage); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); String content = null; try { Result result = new QRCodeReader().decode(bitmap); content = result.getText(); } catch (NotFoundException e) { throw new RuntimeException(e); } catch (ChecksumException e) { throw new RuntimeException(e); } catch (FormatException e) { throw new RuntimeException(e); } return content; } private String getSuffixName(File file) { String path = file.getAbsolutePath(); if (null == path) { return this.format.getImageFormat(); } int pos = path.lastIndexOf(’.’); if (-1 == pos) { return this.format.getImageFormat(); } return path.substring(pos + 1).toUpperCase(); } public static void main(String[] args) throws IOException { String str='https://blog.csdn.net/jiandanyou/article/details/109751418'; QRCode.NEW(str).toFile('d:2.jpg');//使用指定字符串生成二維碼 System.out.println(QRCode.from('d:/2.jpg'));//讀取解析指定二維碼 } }

第四步 使用

工具類(lèi)中的方法使用的靜態(tài)方法,可以直接使用QRCode.方法進(jìn)行執(zhí)行

生成二維碼方法

QRCode.NEW(str).toFile(url);

str:二維碼中包含的字符串(如果包含地址前綴添加http或https 否則不能自動(dòng)跳轉(zhuǎn) 會(huì)解析地址字符串)

url:二維碼圖片生成位置

QRCode.from(url);

url:要解析二維碼圖片位置

到此這篇關(guān)于java使用jar包生成二維碼的示例代碼的文章就介紹到這了,更多相關(guān)java jar包生成二維碼內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产精品二区三区 | 91麻豆久久久 | 91在线精品一区二区 | 欧美日韩精品在线一区 | 一区二区三区免费在线观看 | 欧美在线视频网 | 古装三级在线播放 | 亚洲在线视频 | 韩日中文字幕 | ririsao久久精品一区 | 最新国产在线 | 精品在线播放 | 亚洲福利av| 日本一级淫片免费看 | japan国产精选videos | 日日夜夜天天 | 久久久久久久久久久久久av | 欧美全黄| 人人射av | 一级毛片免费完整视频 | 日韩一区免费在线观看 | 久久久免费精品 | av免费在线播放 | 国产一级在线 | xnxx 美女19 | 日韩av免费在线观看 | 日韩中文字幕在线观看 | 国产专区在线 | 成人深夜在线观看 | 午夜精品久久久久久久久 | 色婷婷精品国产一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 色在线免费视频 | 丁香婷婷综合激情五月色 | 欧洲av在线 | 国产精品一区在线看 | 国产精品视频一区二区三区四 | 成人羞羞在线观看网站 | 精品久久久久久亚洲精品 | 99久久精品国产一区二区成人 | 国产小视频在线播放 | 奇米色欧美一区二区三区 | 我要看a级毛片 | 欧美在线综合视频 | 97人人做人人人难人人做 | 一级毛片免费完整视频 | 成人免费黄色毛片 | 亚洲黄页| 久久久91精品国产一区二区三区 | 欧美亚洲91 | 久久视频免费在线 | 91最新 | 日本精品一区二区三区在线观看 | www.一级电影| 国产伦精品一区二区三毛 | 国产精品久久久久久久久 | 欧美一区二区三区视频 | 国产在线一级视频 | 免费视频一区 | 欧美精品一区在线发布 | 91免费在线播放 | 成人在线视频播放 | 91久久极品| 亚洲精品久久久久久下一站 | 日日天天 | 久久久久黄 | 操久在线 | 精品一区免费观看 | 一本色道精品久久一区二区三区 | 国色天香成人网 | 蜜桃av人人夜夜澡人人爽 | 99爱视频| 午夜成人免费电影 | 一级毛片在线播放 | 欧美精品免费在线观看 | 在线免费观看av片 | 成年人视频在线观看免费 | 最近韩国日本免费观看mv免费版 | 国产片淫级awww | 伊人网伊人 | 国产免费成人 | 亚洲在线 | 欧美 中文字幕 | 亚洲欧美一区二区三区在线 | 国产主播福利 | 中文字幕婷婷 | 国产日韩精品视频 | 国产1页| 91在线资源| 剑来高清在线观看 | 午夜影视 | 日韩一区二区三区在线 | 日本不卡高字幕在线2019 | 欧美中文一区 | 精品国产一区二区三区久久久蜜 | 精品国产三级 | 中文字幕日韩欧美一区二区三区 | 米奇成人网 | 视频在线一区二区 | 色必久久| 欧美日韩在线观看一区二区 | 黄色在线观看 | 成年人免费看片 | 九色91在线 | www.日韩系列 | 国产在线日韩 | 九色视频网站 | 懂色一区二区三区免费观看 | 免费的黄色毛片 | 午夜三区 | 一区二区三区在线免费 | 色天天综合久久久久综合片 | 99r精品在线 | 在线看一区 | 久久精品视频免费看 | 另类二区| 男女羞羞视频在线免费观看 | 黄色电影天堂 | 国产免费黄色 | 97人人爱 | 成人在线影视 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 亚洲人人 | 日韩精品一区二区三区中文在线 | 精品视频一区二区在线观看 | 中文字幕亚洲一区二区三区 | 日日爱视频 | 欧美综合国产 | 狠狠插狠狠操 | 国产成人精品久久二区二区 | 日日干夜夜操 | 岛国av在线 | 欧美日韩成人在线视频 | 黄色成人在线 | 欧美日韩在线免费观看 | 成人免费福利视频 | 久久成人精品一区二区三区 | 久草精品在线 | 久久国产欧美一区二区三区精品 | 亚洲午夜电影 | 久精品视频 | а天堂中文最新一区二区三区 | 亚洲欧美日韩另类精品一区二区三区 | 国产三级在线 | 免费成人在线观看视频 | 中文字幕 视频一区 | 精品免费视频 | 亚洲cb精品一区二区三区 | 天天干天操| 日本免费三片免费观看 | 精品在线视频一区 | 日韩免费高清在线 | 亚洲精品乱码久久久久久蜜糖图片 | 国产亚洲一区二区三区在线观看 | 可以在线看的黄色网址 | 欧美一级在线 | 日本黄网站在线观看 | 91性高湖久久久久久久久_久久99 | 国产日韩精品一区二区 | 亚洲精品色 | 国产一区二区精品在线观看 | 中文字幕久久精品 | av大片| 不卡黄色| 天天草天天干天天 | 日韩免费视频 | 日日想日日干 | 男女视频一区二区 | 成人欧美一区二区 | 亚洲精品视频免费 | 成人激情视频在线观看 | 日韩成年视频 | 国产高清视频在线 | 欧美第一色 | 色av综合网| 色婷网| 国产精品原创巨作av | 成人在线片 | www.久久 | 日韩在线一区二区三区 | 91精品电影| 精品一区二区久久久久久久网站 | 日本在线免费电影 | 免费毛片网 | 不卡一区二区三区四区 | 成人看片网 | 黄色片在线观看视频 | 性高湖久久久久久久久aaaaa | 亚洲社区在线 | av成人在线观看 | 国产精品成人一区二区三区夜夜夜 | 综合一区二区三区 | 日韩在线播放一区 | 欧美日韩精品亚洲 | 精品影院| 久久国产精品视频 | 精品99视频 | 国产91久久精品 | 国产1区| 国产视频一区二区在线观看 | 精品视频免费观看 | 成年网站视频 | 看亚洲a级一级毛片 | 国产区视频在线观看 | 精品一区久久 | 亚洲国产精品成人 | 国产成人精品一区二区三区四区 | 日韩一级免费在线观看 | 欧美日韩二区三区 | 日韩免费视频一区二区 | 欲色av| 成年人看的羞羞网站 | 男女深夜视频 | 亚洲国产精品视频 | 久久噜噜噜精品国产亚洲综合 | 亚洲一区在线日韩在线深爱 | 欧美在线网站 | 日韩精品一区二 | 亚洲黄色在线视频 | 一级黄色毛片免费 | av电影天堂网 | 伊人网站 | 久久人体视频 | 亚洲免费精品 | 日韩免费视频 | 亚洲人成人一区二区在线观看 | 91精品国产乱码久久久久久久久 | 成人激情免费视频 | 99久久免费精品国产男女性高好 | 求av网址| 免费av一区二区三区 | 日韩国产一区二区 | 欧美一级特黄aaaaaaa在线观看 | 97av视频在线观看 | 国产精品免费一区二区三区四区 | 成人a网| 国产精品亚洲视频 | 日韩一区二区三区在线视频 | 中文字幕欧美在线 | 久久久综合网 | 免费观看一级特黄欧美大片 | 做视频免费观看网站 | 一区二区三区不卡视频 | 亚洲一区在线免费观看 | 免费欧美 | 电影91久久久 | 日韩中文字幕 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 99精品九九 | 日韩在线视频第一页 | 精品久久久久久久久久久久久久 | 久久久国产精品一区 | 精品国产九九 | 最新国产福利在线 | 国产精品美女久久久久久久久久久 | 国产极品视频在线观看 | 综合色婷婷一区二区亚洲欧美国产 | 国产日韩欧美一区二区 | 伊人网在线视频免费观看 | 亚洲久悠悠色悠在线播放 | 欧美激情国产日韩精品一区18 | 99精品欧美一区二区三区综合在线 | 欧美中文| 有码在线| 一区二区免费视频 | 欧美日韩黄色一级片 | 国产成人高清精品免费5388 | 亚洲午夜精品一区二区三区 | 亚洲一区免费观看 | 国产成人久久精品一区二区三区 | 日韩精品在线观看一区 | 欧美一区二区三 | 国产第一二区 | 国产欧美日韩一区 | 国产一区二区三区久久久 | 免费在线精品视频 | 成人精品视频 | 精品视频久久久 | 国产偷自视频区视频 | 国产免费视频在线 | 亚洲国产精品久久 | 国产一区二区视频在线 | 国产高清精品一区二区三区 | 黄色a视频 | 免费观看毛片 | 国产三级自拍 | 久久青| 精品91久久久 | a久久免费视频 | 国产在线网站 | 热久久影院 | 亚洲区在线 | 91精品国产欧美一区二区 | 国产成人精品久久 | 九九亚洲| 亚洲激情在线播放 | 日韩av福利 | 日韩欧美一区在线 | 久草免费在线 | 免费h在线观看 | 亚洲欧洲精品一区二区 | 中文字幕一区二区三区四区不卡 | 久久免费精品视频 | 中文字幕日韩欧美一区二区三区 | 免费网站国产 | 久久国内| 日韩成人精品视频在线观看 | 欧美国产日韩一区 | 久久国产精品免费一区二区三区 | 91精品国产高清久久久久久久久 | 欧美一级在线播放 | 久久综合av| 午夜精品久久久久久久久 | 午夜视频一区二区三区 | 国产高清在线看 | 亚洲日本国产 | 亚洲第一中文字幕 | 日本成人中文字幕在线观看 | www.久久久| 日韩视频在线观看 | 国产成人免费在线 | 欧美成人免费 | 中文日韩av | 欧美国产视频一区 | 国产黄色精品 | 精品欧美一区二区三区久久久 | 成人影院av | 中文字幕一二三区 | 国产在线小视频 | 久久精品影视 | 伊人网综合视频 | 成人动慢 | 亚洲一区视频在线 | 亚洲国产精品一区二区久久,亚洲午夜 | 精品午夜久久 | 野狼在线社区2017入口 | 一级电影免费看 | 精一区二区 | 国产伦精品一区二区三区在线 | 狠狠的干| 中文字幕日韩一区二区三区 | 亚洲 欧美日韩 国产 中文 | 亚洲成人在线视频网站 | 大黑人交xxx极品hd | 日韩大尺度在线观看 | 亚洲精选免费视频 | 精品国产31久久久久久 | 理伦影院 | 高清xxxx| 欧美日韩国产中文 | 欧美在线国产 | 国产男女做爰免费网站 | 午夜成人免费电影 | 欧美在线一区二区 | 欧美a网 | 精品一区二区三区免费毛片爱 | 91精品国产综合久久婷婷香蕉 | 久久国产精品久久久久久 | 国产免费一区 | 久久久久中文字幕 | 久久福利电影 | 北条麻妃99精品青青久久 | 国产精品二区三区 | 欧美一区二区激情三区 | 自拍偷拍小视频 | 欧美精品亚洲 | 密桃av | 国产激情一区二区三区成人免费 | 国产一区二区综合 | 免费黄色在线观看 | 九九热这里只有精品在线观看 | 精品国产99| 国产精品电影 | 黄色一级大片在线免费看产 | 黄色91 | 91免费在线 | 日韩中文字幕免费在线播放 | 亚洲国产高清高潮精品美女 | 亚洲一区二区三区四区的 | 亚洲综合一区二区三区 | 精品视频久久 | 黄色小视频免费观看 | 国产精品美女久久久久久久久久久 | 波多野结衣av中文字幕 | 一区二区免费视频 | 亚洲国产精品一区二区久久 | 日韩欧美在线一区二区 | 亚洲 自拍 另类 欧美 丝袜 | 国产成人一区 | 日韩在线精品 | 色综合久久一区二区三区 | 国产在线观看91一区二区三区 | 81精品国产乱码久久久久久 | av免费观看在线 | 国产一区二区三区精品久久久 | 成人久久久久久久久 | 日本一区二区不卡 | 日韩中文字幕在线免费 | 久久精品久久久 | 9l蝌蚪porny中文自拍 | 亚洲成人日本 | 国产精品久久精品 | 免费观看视频www | www.国产.com| av在线官网 | 精品一区二区三区在线观看 | 91偷拍精品一区二区三区 | 永久免费精品视频 | 国产九九九 | 国产综合一区二区 | www.夜夜骑| 精品久久久久久久久久久久 | 欧美精品片 | 成人看的免费视频 | 岛国伊人 | 成人综合视频在线 | 国产精品成人在线观看 | 精品无人乱码一区二区三区的优势 | 日韩专区在线 | 久久综合久久综合久久综合 | 日一区二区 | 大陆一级毛片免费视频观看 | 成人福利在线 | a级毛片久久 | 国产中文字幕在线观看 | 99国产精品久久久 | 日韩欧美国产成人一区二区 | 久久亚洲一区 | 亚洲免费视频一区 | av男人的天堂网 | 欧美成人免费 | 少妇淫片aaaaa毛片叫床爽 | 国产片侵犯亲女视频播放 | 欧美日韩一区免费 | 最新国产视频 | 一区二区三区在线观看免费 | 久久国产精品免费一区二区三区 | 日本视频免费高清一本18 | 国产天堂在线 | 国产在线一 | 欧美夜夜爽 | 久久成人免费观看 | 91小视频| 人妖天堂狠狠ts人妖天堂狠狠 | 激情欧美一区二区三区中文字幕 | 中文字幕日韩欧美一区二区三区 | 激情欧美日韩一区二区 | 国产最好的av国产大片 | 国产日韩精品一区二区 | 久久久日韩精品一区二区三区 | 欧美一级精品 | 午夜久久久 | 中国黄色在线视频 | 中文字幕一区在线 | 日韩视频久久 | 国产日韩精品视频 | 国产精品日日夜夜 | 国产一区二区精品 | 欧美精品一区二区三区手机在线 | 日韩毛片在线观看 | 激情欧美一区二区 | 91精品国产综合久久久久久 | 一区二区三区成人 | 欧洲美女7788成人免费视频 | 午夜电影av| 在线免费观看黄色 | 伊人久久艹 | 国产精品久久久久久久久久免费 | 99在线精品视频 | 夜操| 精品亚洲一区二区三区 | aaa在线| 日韩欧美视频 | 免费成人av网站 | 91av免费在线观看 | 亚洲免费视频网 | 日韩精品 | 日韩成人三级 | 久久久999成人 | 国产成人精品久久二区二区91 | 一a级毛片 | 亚洲一区亚洲二区 | 久久综合亚洲 | 国产v日产∨综合v精品视频 | 久久久www成人免费无遮挡大片 | 伊人色综合久久天天五月婷 | 亚洲性视频网站 | 日本欧美在线观看 | 欧美精品黄 | 国产亚洲一区二区三区在线观看 | 中文字幕日韩在线 | 亚洲午夜精品片久久www慈禧 | 国产成人涩涩涩视频在线观看 | 国产精品视频入口 | 国产精品久久久久久久久久久新郎 | 天天拍天天操 | 国产一区二区三区四区视频 | 国产日韩精品视频 | 国产精品第一区 | 天天爽天天干 | 欧美精品在线免费观看 | 永久精品 | av中文字幕在线播放 | 中文字幕在线观看精品视频 | 麻豆资源| 久久伊人青青草 | 久久韩国 | 成人亚州| 欧美午夜精品一区二区三区电影 | 国产精品成人国产乱一区 | 日韩精品一区二区三区视频播放 | 狠狠综合久久av一区二区老牛 | 毛片免费观看 | 国产999精品久久久影片官网 | 精品国产精品三级精品av网址 | 日操| 成人h动漫精品一区二区器材 | 一区二区日本 | 亚洲成年片 | 黄色一级片免费播放 | 中文字幕日韩一区 | 色综合色综合网色综合 | 另类久久 | 国产一区二区视频免费 | 黄色小视频在线免费观看 | 日本免费www| 高清久久 | 欧美亚洲国产一区 | 毛片在线免费播放 | 好色视频在线观看 | 久久国产一区二区三区 | 韩日在线视频 | 国产精品第一国产精品 | 色婷婷综合在线视频 | 久久99一区| 久久久久国产 | 一级片黄色免费 | 91大片 | 亚洲国产成人av | 日韩精品免费在线视频 | sis001亚洲原创区 | 国产精品毛片 | 精品日韩欧美一区二区在线播放 | 精品日韩欧美一区二区在线播放 | 国产福利一区二区三区视频 | 欧美久久久久 | 国产成人精品午夜视频' | 色婷婷综合久久久中文字幕 | 中文字幕一区二区在线观看 | 四虎影院网 | 91精品区| 午夜在线| 色综合天天综合网国产成人网 | 久久成 | 毛片区 | 81精品国产乱码久久久久久 | 人人人人人你人人人人人 | 日视频 | 在线观看www | 精品国产一区二区在线 | 韩国毛片在线 | 欧美人人 | 国产欧精精久久久久久久 | 中文字幕日韩一区二区 | 国产性猛交xxxx免费看久久 | 亚洲 欧美 日韩在线 | 国产亚洲精品久久久久动 | av一区在线观看 | 国产精品久久久久国产a级 91福利网站在线观看 | 久久久亚洲一区二区三区 | 国产精品爱久久久久久久 | 91丨九色丨国产在线 | 日韩av在线不卡 | 久久99成人 | 欧美国产视频一区 | 色综合一区二区三区 | 欧美精品一区在线发布 | 国产黄色大片网站 | av一级毛片 | 中文字幕高清av | 337p亚洲欧洲 | 欧美视频免费在线 | 精品久久中文字幕 | 精品久| 国产一区二区三区精品久久久 | 日韩欧美国产精品一区二区三区 | 久久久久久中文字幕 | 成人精品免费视频 | 中文字幕在线视频一区 | 国产精品高清在线 | 久久久久国产精品免费免费搜索 | 日本成人中文字幕在线观看 | 天堂亚洲 | 日韩免费视频一区二区 | 欧洲亚洲一区 | 99久久夜色精品国产亚洲1000部 | 亚洲精品7777xxxx青睐 | 在线视频久久 | 国产在线中文字幕 | 午夜国产一级 | 国产精品精品视频一区二区三区 | 久久免费在线观看 | 国产美女久久久 | 中文字幕日韩视频 | 北条麻妃国产九九九精品小说 | 成人国产精品免费网站 | 久久6| 狠狠干干 | 欧美一级二级三级 | 国产一级中文字幕 | 在线欧美成人 | 日韩欧美在线观看视频 | 一级片在线观看 | 国产激情 | 国产一区二区三区四区在线观看 |