黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

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

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

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

第一步 導入,maven依賴或者下載指定jar包

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

第二步 書寫二維碼生成器的工具類

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; /** 內容編碼格式 */ private String encode; /** 錯誤修正等級 (Error Collection Level) */ private ErrorCorrectionLevel errorCorrectionLevel; /** 錯誤修正等級的具體值 */ private double errorCorrectionLevelValue; /** 前景色 */ private Color foreGroundColor; /** 背景色 */ private Color backGroundColor; /** 圖片的文件格式 */ private String imageFormat; /** 圖片的外邊距大小 (Quiet Zone) */ private int margin; /** 提供給編碼器額外的參數 */ private Hashtable<EncodeHintType, Object> hints; /** 需要添加的圖片 */ private File icon; /** * 創建一個帶有默認值的 QRCode 生成器的格式。默認值如下 * * <ul> * <li>圖片大小: 256px</li> * <li>內容編碼格式: UTF-8</li> * <li>錯誤修正等級: Level M (有15% 的內容可被修正)</li> * <li>前景色: 黑色</li> * <li>背景色: 白色</li> * <li>輸出圖片的文件格式: png</li> * <li>圖片空白區域大小: 0個單位</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; } /** * 設置圖片的大小。圖片的大小等于實際內容與外邊距的值(建議設置成偶數值)。 * * @param size * 圖片的大小 * * @return QRCode生成器的格式 */ public QRCodeFormat setSize(int size) { this.size = size; return this; } /** * 返回內容編碼格式。 * * @return 內容編碼格式 */ public String getEncode() { return encode; } /** * 設置內容編碼格式。 * * @param encode * 內容編碼格式 * * @return QRCode生成器的格式 */ public QRCodeFormat setEncode(String encode) { this.encode = encode; return this; } /** * 返回錯誤修正等級。 * * @return 錯誤修正等級 */ public ErrorCorrectionLevel getErrorCorrectionLevel() { return errorCorrectionLevel; } /** * 返回錯誤修正等級的具體值。 * * @return 錯誤修正等級的具體值 */ public double getErrorCorrectionLevelValue() { return errorCorrectionLevelValue; } /** * 設置錯誤修正等級。其定義如下 * * <ul> * <li>L: 有 7% 的內容可被修正</li> * <li>M: 有15% 的內容可被修正</li> * <li>Q: 有 25% 的內容可被修正</li> * <li>H: 有 30% 的內容可被修正</li> * </ul> * * @param errorCorrectionLevel * 錯誤修正等級 * * @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; } /** * 設置前景色。值為十六進制的顏色值(與 CSS 定義顏色的值相同,不支持簡寫),可以忽略「#」符號。 * * @param foreGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setForeGroundColor(String foreGroundColor) { try { this.foreGroundColor = getColor(foreGroundColor); } catch (NumberFormatException e) { this.foreGroundColor = Color.BLACK; } return this; } /** * 設置前景色。 * * @param foreGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setForeGroundColor(Color foreGroundColor) { this.foreGroundColor = foreGroundColor; return this; } /** * 返回背景色。 * * @return 背景色 */ public Color getBackGroundColor() { return backGroundColor; } /** * 設置背景色。值為十六進制的顏色值(與 CSS 定義顏色的值相同,不支持簡寫),可以忽略「#」符號。 * * @param backGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setBackGroundColor(String backGroundColor) { try { this.backGroundColor = getColor(backGroundColor); } catch (NumberFormatException e) { this.backGroundColor = Color.WHITE; } return this; } /** * 設置背景色。 * * @param backGroundColor * 前景色的值 * * @return QRCode生成器的格式 */ public QRCodeFormat setBackGroundColor(Color backGroundColor) { this.backGroundColor = backGroundColor; return this; } /** * 返回圖片的文件格式。 * * @return 圖片的文件格式 */ public String getImageFormat() { return imageFormat.toUpperCase(); } /** * 設置圖片的文件格式 。 * * @param imageFormat * 圖片的文件格式 * * @return QRCode生成器的格式 */ public QRCodeFormat setImageFormat(String imageFormat) { this.imageFormat = imageFormat; return this; } /** * 返回圖片的外邊距大小。 * * @return 圖片的外邊距大小 */ public int getMargin() { return margin; } /** * 設置圖片的外邊距大小 。 * * @param margin * 圖片的外邊距大小 * * @return QRCode生成器的格式 */ public QRCodeFormat setMargin(int margin) { this.margin = margin; return this; } /** * 返回提供給編碼器額外的參數。 * * @return 提供給編碼器額外的參數 */ 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; } /** * 設置添加的圖片 。 * * @param icon * 添加的圖片 * * @return QRCode生成器的格式 */ public QRCodeFormat setIcon(File icon) { this.icon = icon; return this; } /** * 設置添加的圖片 。 * * @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()); } }}

第三步 使用生成器對象按照指定格式進行生成讀取二維碼

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 圖像對象 */ private BufferedImage qrcodeImage = null; /** 生成的 QRCode 圖片文件 */ private File qrcodeFile = null; /** * 返回生成的 QRCode 圖像對象 * * @return 生成的 QRCode 圖像對象 */ public BufferedImage getQrcodeImage() { return qrcodeImage; } /** * 返回生成的 QRCode 圖片文件 * * @return 生成的 QRCode 圖片文件 */ public File getQrcodeFile() { return qrcodeFile; } private QRCode() { } /** * 使用帶默認值的「QRCode 生成器格式」來創建一個 QRCode 處理器。 * * @param content * 所要生成 QRCode 的內容 * * @return QRCode 處理器 */ public static QRCode NEW(final String content) { return NEW(content, QRCodeFormat.NEW()); } /** * 使用指定的「QRCode 生成器格式」來創建一個 QRCode 處理器。 * * @param content * 所要生成 QRCode 的內容 * @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; } /** * 把指定的內容生成為一個 QRCode 的圖片,之后保存到指定的文件中。 * * @param f * 指定的文件 * * @return QRCode 處理器 */ public QRCode toFile(String f) { return toFile(new File(f), this.format.getIcon()); } /** * 把指定的內容生成為一個 QRCode 的圖片,之后保存到指定的文件中。 * * @param qrcodeFile * 指定的文件 * * @return QRCode 處理器 */ public QRCode toFile(File qrcodeFile) { return toFile(qrcodeFile, this.format.getIcon()); } /** * 把指定的內容生成為一個 QRCode 的圖片,并在該圖片中間添加上指定的圖片;之后保存到指定的文件內。 * * @param qrcodeFile * QRCode 圖片生成的指定的文件 * @param appendFile * 需要添加的圖片。傳入的文件路徑如果沒有(null 或者為空)的時候將忽略該參數 * * @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)); } /** * 把指定的內容生成為一個 QRCode 的圖片,并在該圖片中間添加上指定的圖片;之后保存到指定的文件內。 * * @param qrcodeFile * QRCode 圖片生成的指定的文件 * @param appendFile * 需要添加的圖片。傳入的圖片不存在的時候將忽略該參數 * * @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(); // 計算 icon 的最大邊長 // 公式為 二維碼面積*錯誤修正等級*0.4 的開方 int maxWidth = (int) Math.sqrt(baseWidth * baseHeight * format.getErrorCorrectionLevelValue() * 0.4); int maxHeight = maxWidth; // 獲取 icon 的實際邊長 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(); } /** * 使用帶默認值的「QRCode 生成器格式」,把指定的內容生成為一個 QRCode 的圖像對象。 * * @param content * 所需生成 QRCode 的內容 * * @return QRCode 的圖像對象 */ public static BufferedImage toQRCode(String content) { return toQRCode(content, null); } /** * 使用指定的「QRCode生成器格式」,把指定的內容生成為一個 QRCode 的圖像對象。 * * @param content * 所需生成 QRCode 的內容 * @param format * QRCode 生成器格式 * @return QRCode 的圖像對象 */ 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 圖片文件中解析出其內容。 * * @param qrcodeFile * QRCode 文件 * * @return QRCode 中的內容 */ 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 圖片文件中解析出其內容。 * * @param qrcodeFile * QRCode 圖片文件 * * @return QRCode 中的內容 */ public static String from(File qrcodeFile) { try { BufferedImage image = ImageIO.read(qrcodeFile); return from(image); } catch (IOException e) { throw new RuntimeException(e); } } /** * 從指定的 QRCode 圖片鏈接中解析出其內容。 * * @param qrcodeUrl * QRCode 圖片鏈接 * * @return QRCode 中的內容 */ public static String from(URL qrcodeUrl) { try { BufferedImage image = ImageIO.read(qrcodeUrl); return from(image); } catch (IOException e) { throw new RuntimeException(e); } } /** * 從指定的 QRCode 圖像對象中解析出其內容。 * * @param qrcodeImage * QRCode 圖像對象 * * @return QRCode 中的內容 */ 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'));//讀取解析指定二維碼 } }

第四步 使用

工具類中的方法使用的靜態方法,可以直接使用QRCode.方法進行執行

生成二維碼方法

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

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

url:二維碼圖片生成位置

QRCode.from(url);

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

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

標簽: Java
相關文章:
主站蜘蛛池模板: 美日韩视频 | 亚洲国产av无码精品无广告 | 日韩国产人妻一区二区三区 | 久久永久免费视频 | 日本淫片免费啪啪3 | 91大片淫黄大片在线天堂 | 尹人香蕉久久99天天拍 | 久久这里只有精品18 | 中文字幕乱码人妻综合二区三区 | av网站大全在线观看 | 黄色3级视频 | 少妇人妻系列无码专区视频 | 免费观看成人欧美www色 | 日韩深夜在线 | 国产香蕉97碰碰久久人人 | 日韩欧美国产成人 | 懂色av一区二区三区免费看 | 日本无遮挡吸乳视频 | 日韩精品一区二区三区国语自制 | 激情爆乳一区二区三区 | 国产无套内射又大又猛又粗又爽 | 高清新婚夫妇性xxxxx | 综合久久国产 | 国产精品色悠悠 | 国产精品久久夂夂精品香蕉爆 | 午夜少妇视频 | 少妇紧身牛仔裤裤啪啪 | 久久精品免费观看 | 台湾成人毛片 | 丝袜人妻一区二区三区网站 | 爆乳一区二区三区无码 | 国产婷婷色综合av蜜臀av | 国产精彩视频一区 | 最新极品jizzhd欧美 | 亚欧洲精品视频 | a级港片免费完整在线观看 a级高清毛片 | 日本乱淫a∨片 | 一本色道久久亚洲精品加勒比 | 久久这里只有 | 樱桃国产成人精品视频 | 亚洲人成在线影院 | 国产激情综合五月久久 | 一本色道久久综合亚洲精品不卡 | 丰满少妇在线观看网站 | 粉嫩av在线 | 亚洲射 | 精品国产乱码久久久久久影片 | 香港三级网站 | 国产伦精品一区二区三区高清 | 色综合久久天天综合网 | 精品亚洲a∨无码一区二区三区 | 国产日韩欧美视频免费看 | 欧美一级在线免费 | 一级特色大黄美女播放 | 999综合网 | 中文字幕在线2018 | 欧美日韩精品一区二区天天拍 | 日本美女黄色一级片 | 欧美激情乱人伦 | 亚洲天堂日韩在线 | 亚洲精品国产a | 欧美精品一级在线观看 | 91亚洲成a人片在线观看www | 国产偷国产偷亚洲清高app | 99精品人妻无码专区在线视频区 | yw在线观看| av影片在线播放 | 国产精品视频h | 中国美女乱淫免费看视频 | 小鲜肉自慰网站 | 欧美牲交a欧美牲交aⅴ免费真 | 男ji大巴进入女人的视频 | av一区二区在线播放 | av永久免费网站 | 国产成年无码v片在线 | 色噜噜狠狠狠狠色综合久 | 中文av一区 | 久久免费视频精品 | www国产亚洲精品久久网站 | 在线观看亚洲一区 | 96人xxxxxxxxx69| 蜜乳av网站| 极品少妇xxxx | 情侣呻吟对白精品av | 国产成人无遮挡在线视频 | 狠狠色伊人亚洲综合第8页 狠狠色综合久久婷婷 | 久久久久网址 | 欧美综合一区 | 国产真实一区二区三区 | 91在线porny国产在线看 | 西方av在线 | www午夜激情 | 91av综合| 国产99久久久国产精品 | 狠狠人妻久久久久久综合蜜桃 | 午夜aaa| 91久久极品少妇韩国 | 在线免费看a | 黄色视屏在线播放 | 国语自产免费精品视频在 | 99re最新| 国产一级特黄a高潮片 | 欧美激情一级 | 婷婷伊人久久 | 白嫩少妇各种bbwbbw | av中文在线播放 | 国产精品美女久久久 | 欧美亚洲伦理 | 亚洲国产成人久久一区二区三区 | 国产精品久久 | 亚洲视频一区二区在线观看 | 在线观看国产福利 | 白嫩少妇喷水正在播放 | 不卡的av在线播放 | 五月花婷婷 | av黄色免费网站 | 久久精品国产精品亚洲毛片 | 午夜精品久久久久久久无码 | 欧美日韩久久精品 | 中文字幕第12页 | 国产精品国产三级国产普通话对白 | 欧美日韩免费网站 | 亚洲蜜桃av| 女厕厕露p撒尿八个少妇 | 性欧美视频videos6一9 | 女人被狂躁60分钟视频 | 成人无码精品1区2区3区免费看 | 久久免费精品国自产拍网站 | 国产欧美精品aaaaa久久 | 久久香蕉国产精品麻豆粉嫩av | 日本高清免费毛片大全awaaa | 欧美成人做爰大片免费看黄石 | 影音先锋日韩精品 | 国产女人精品 | 久久亚洲综合 | 青青青青操 | 人妻大战黑人白浆狂泄 | 白白嫩嫩的美女无套内谢 | 成人在线h | 成年人黄色大片 | 成人性生交大片免费看r链接 | 久久国产麻豆 | 亚洲精品无码久久久久久 | 337p日本欧洲亚洲大胆 | 黄色片一级毛片 | 毛片久久久久久 | 精品久久久久久久久久久久包黑料 | 国产黄a三级三级三级av在线看 | 337p日本欧洲亚洲大胆色噜噜 | 亚洲精品网站在线观看 | 成人免费观看cn | 亚洲成a人片在线www | 欧美性猛交xxxx黑人交 | 日本久久久久久久久久久 | 亚洲国产天堂一区二区三区 | 黄色大片免费看 | 欧美日韩国产麻豆 | 深夜av在线播放 | 国产99自拍| 红桃av永久久久 | 一级特级片 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 麻豆av在线播放张芸熙 | 国产肥白大熟妇bbbb | 亚洲免费黄网 | 久久av喷吹av高潮av萌白 | 天天色综合2 | 久久亚洲激情 | 日韩欧美在线视频观看 | 久久99精品久久久水蜜桃 | 亚洲综合网址 | 日本中文字幕在线观看 | 午夜tv| 曰韩人妻无码一区二区三区综合部 | 秋霞午夜一区二区三区视频 | 五月天综合色 | 国产中文在线视频 | 亚洲国产精品无码久久青草 | 欧美激情在线一区二区三区 | а√天堂资源8在线官网在线 | 亚洲国产精品久久久久婷婷老年 | 欧美性生活免费视频 | 谁有免费的黄色网址 | 黄色片在线视频 | 亚洲热妇无码av在线播放 | 偷看农村妇女牲交 | 国产日产欧产精品精品app | www夜夜操| 免费操 | 国产精品色综合一区二区三区 | 人妻一本久道久久综合久久鬼色 | 国产精品tv | 欧美二区在线观看 | 久久久久久99精品 | 欧美猛交ⅹxxx乱大交视频 | 中国av片 | 引诱我的邻居少妇在线播放 | 人人妻人人爽人人做夜欢视频九色 | 美女内射毛片在线看免费人动物 | a级片一级片 | www精品 | 欧产日产国产精品99 | 国产成人av一区二区三区在线 | 国产肉体ⅹxxx137大胆视频 | 国产精品一二三四五 | 成人免费毛片免费 | 日韩成人免费观看 | 长篇h版少妇沉沦交换 | 亚洲精品sm一区二区 | 性做久久久久久 | 中国老妇荡对白正在播放 | 色老板最新地址 | 国产又黄又猛又粗又爽的a片动漫 | 欧美在线一二三区 | 国产精品欧美激情 | 麻豆网址 | 91丨九色丨尤物 | 亚洲国产精品美女 | 免费看日韩毛片 | 极品成人 | 天天狠天天透天干天天怕∴ | 午夜成人免费影院 | 97网站| 国产最新av | 成人羞羞国产免费图片 | 久久精品国产精品亚洲色婷婷 | 亚洲成a人v欧美综合天堂麻豆 | 欧美黑人又大又粗xxxxx | 亚洲国语 | 日日橹狠狠爱欧美二区免费 | 国产三级在线播放 | 欧美性狂猛xxxxxbbbbb | 无码av一区二区三区无码 | 欧美综合区 | 3p在线播放| 91久久国产精品 | 国产成人小视频 | 美女大量吞精在线观看456 | 欧洲精品视频在线 | 亚洲国产精品成人无码区 | 久久伊人一区 | 久久国产精品久久久久久 | eeuss影院在线奇兵区145 | 一区二区三区视频 | 国产91精品看黄网站在线观看 | 亚洲色www成人永久网址 | 藏精阁成人免费观看在线视频 | 国产一卡二卡三卡四卡 | 亚洲熟女乱色综合一区 | 国内露脸少妇精品视频 | 亚洲人成人 | 日韩成人精品在线 | 国产剧情一区在线 | 色噜噜狠狠一区二区三区果冻av | 国产一区二区三区四区视频 | 黄网站免费在线观看 | 国产999精品成人网站 | 日韩成人av免费在线观看 | 蜜臀av粉嫩av懂色av | jizzjizz视频| 精品久久久一区 | 中文字幕亚洲欧美 | 欧美视频免费 | 污片在线看 | 性一交一乱一乱视频 | 青青草在线视频网站 | 岛国av在线不卡 | 美女扣逼喷水视频 | 中文在线好最新版在线 | 欧美干干干 | 久久国产精品影院 | dy888亚洲精品一区二区三区 | 国产亚洲精品美女久久久 | 日本免费无遮挡毛片的意义 | 秋霞午夜一区二区三区视频 | 阿v免费在线观看 | 亚洲第一毛片18我少妇 | 国产69久久精品成人看 | 又污又爽又黄的网站 | 热99视频| 久久欧美亚洲另类专区91大神 | 欧美不卡一区二区三区 | 在线免费观看成人 | 人人舔人人干 | 国产欧美做爰xxxⅹ在线观看 | 影音av在线| 2023精品国色卡一卡二 | 久久精品一二三区 | 超碰在线免费公开 | 欧美日韩国产a | 91欧美精品 | aaaa黄色| 国产男女激情 | 玩弄放荡人妻一区二区三区 | 99国产精品白浆在线观看免费 | 熟妇高潮精品一区二区三区 | 国产一级片av | 天堂一码二码三码四码区乱码 | 午夜av一区二区三区 | 日本不卡高字幕在线2019 | va婷婷在线免费观看 | 人人妻人人澡人人爽人人精品 | julia乱码中文一二三区 | 92看片淫黄大片看国产片 | 成人三级无码视频在线观看 | 男女啪祼交视频 | 在线精品亚洲一区二区佐佐木明希 | 国产chinesehd精品 | av一本二本 | 欧美一级黄色大片 | 免费在线看黄色片 | 亚洲欧美综合区丁香五月小说 | 精品视频国产香蕉尹人视频 | 少妇交换浪荡h肉辣文视频 少妇交换做爰中文字幕 | 国产91 精品高潮白浆喷水 | 视频一区二区国产 | 国产一区二区视频播放 | 国产在线视频福利 | 免费毛片一区二区三区亚女同 | 97国产精品视频 | 亚洲男人的天堂一区二区 | 日本又色又爽又黄的a片18禁 | 欧美成人精品a∨在线观看 香蕉av福利精品导航 | 久久av片| 国内精品少妇 | 四虎影视免费永久在线 | 瑜伽美女健身视频集锦 | 99久久国产露脸国语对白 | 精品国产一区二区三区四区阿崩 | 日韩人妻无码精品久久 | 欧美日本一区 | www.91亚洲 | 人妻无码αv中文字幕久久琪琪布 | 91插插影院 | 国产有码在线观看 | 里番acg☆里番本子全彩 | 久久久经典 | 美女三级黄色片 | 日韩中文字幕免费 | 国产成人无码av在线播放dvd | 精品一区二区三区免费视频 | 国产欧美亚洲精品第一区软件 | 国产精品一区三区 | 99久久亚洲精品无码毛片 | 一本到无吗专区 | 日韩精品第1页 | 少妇和邻居做不戴套视频 | 性久久久久久久久久 | 777欧美| 国产口语对白老妇 | 国产国拍精品亚洲 | 国产综合第一页 | 欧美一区二区三区 | 日本在线视频中文字幕 | 成 人 免 费 黄 色 | 五月av在线 | 人妻三级日本三级日本三级极 | 久久精品aaaaaa羞羞羞 | 国产伦精品一区二区三区免费 | 亚洲黄色大全 | 国产思思99re99在线观看 | 三浦理惠子av在线播放 | 91成品人影院 | 日韩精品一区二区午夜成人版 | 国产国语农村妇女偷人视频 | 国产又粗又硬又大爽黄老大爷视 | 视频一区二区免费 | 男女性爽大片视频 | 黄色片一级 | 激情小说视频在线 | 激情综合色五月丁香六月亚洲 | 久久久久久国产精品免费免费男同 | 少妇又紧又色又爽又刺激的视频 | 在线播放小视频 | 波多野结衣精品一区二区三区 | 亚洲性一区二区 | 日日鲁夜夜视频热线播放 | 在线观看免费人成视频色9 在线观看的网站 | 狠狠色丁香久久婷婷综合五月 | 日韩av激情在线观看 | 国产精品成人国产乱 | 欧美白丰满老太aaa片 | 亚洲狠狠婷婷综合久久久久图片 | 国产精品欧美大片 | 久久久老司机 | 少妇精品无码一区二区三区 | 免费的黄色毛片 | 亚洲精品91天天久久人人 | 狠狠干精品 | 一本久道久久综合狠狠爱 | 日韩精品视频免费 | 美女脱免费看网站女同 | 激情五月中文字幕 | 另类av在线 | 欧美日韩在线免费视频 | 国产午夜精品一区二区三区 | 成人免费乱码大片a毛片软件 | 欧美 唯美 清纯 偷拍 | 国产免费专区 | 日本欧美高清视频 | 欧美日韩视频在线观看一区 | 深夜福利一区 | www.xxx亚洲 | 亚洲国产成人精品女人久久久野战 | 国产交换配乱淫视频a免费 国产精成人品免费观看 | 婷婷射图| 国产伦精品一区二区三区免.费 | 国产一区久久 | 一本一道av中文字幕无码 | 日韩精品一区二区三区老鸭窝 | 2023精品国色卡一卡二 | 一品二品三品中文字幕 | 中文字幕一区二区三三 | 国产专区第一页 | 国产精品国产三级国产aⅴ9色 | 欧美第一页浮力影院 | 日本视频精品 | 成人网页 | 超碰av在线免费观看 | 女主和前任各种做高h | 亚洲精品久久久蜜臀 | 国产精品一区久久 | 国产在线一区二区 | 东方影院av久久久久久 | 国产一区第一页 | 欧美精品一区二区三区免费视频 | 亚州国产 | 国产老妇伦国产熟女老妇视频 | 永久免费未网 | 国产后入清纯学生妹 | 成人特级片| 久久爰 | 国产一级二级三级视频 | 美女黄视频在线观看 | av中文字幕第一页 | 性生活视频网站 | 精品国产va久久久久久久 | 婷婷四房综合激情五月在线 | 久操中文 | 婷婷开心色四房播播 | 久久爱网 | 精品在线一区 | 国产精品免费vv欧美成人a | 91亚洲国产成人精品一区 | 亚洲欧美色图片 | 牛和人交xxxx欧美 | 99久久久精品免费观看国产 | 少妇愉情理伦片高潮日本 | 色婷婷av一区二区三区之e本道 | 亚洲h| 蜜桃视频在线观看污 | www.久久久久久久久久 | 国产精品 27p | 欧美精品a区 | 天天av天天翘天天综合网 | 波多野结衣电车痴汉 | 黄色视网站 | 在线免费观看中文字幕 | 免费又黄又爽又猛的毛片 | 最近中文字幕在线观看视频 | 日韩精品在线不卡 | 韩国极品少妇xxxxⅹ视频 | 欧美在线性爱视频 | 国产乱能| 黄色在线视频网址 | 国产区视频在线观看 | 欧美爱爱免费视频 | 亚洲自拍偷拍另类 | 少妇高潮伦 | 狠狠干网| √资源天堂中文在线 | 国产极品美女高潮无套久久久 | 欧美a级黄 | 国产午夜性爽视频男人的天堂 | 久久国产综合 | 激情五月网站 | 中文字幕亚洲精品在线 | 乱子伦一区二区三区 | 国产美女福利在线 | 久久无码专区国产精品s | 国产亚洲精品久久久久久久软件 | 免费视频一区二区 | 亚洲色啦啦狠狠网站 | 6699久久久久久久77777'7 6699嫩草久久久精品影院竹菊 | 日产一二三四五六七区麻豆 | 无码人妻少妇色欲av一区二区 | 2021久久精品国产99国产精品 | 国产免费叼嘿网站免费 | 欧美日韩a| 色播视频在线观看 | 国产欧美一区二区精品久久久 | 日本少妇bb | 美国做爰xxxⅹ性视频 | 亚洲免费网站观看视频 | 精品乱码一区内射人妻无码 | 91色在线视频 | 欧美人与物videos另类 | 日韩成人综合 | 国产av无码国产av毛片 | 日本成人在线免费观看 | 成人国产精品色哟哟 | eeuss影院www在线窝窝 | 久草在线色站 | 激情偷拍av| 马与人黄色毛片一部免费视频 | 伊人中文网 | 欧美日韩国产免费一区二区三区 | 精品国产乱码久久久久久口爆 | 成人免费在线观看av | 未满小14洗澡无码视频网站 | 韩国av在线免费观看 | 日本中文字幕第一页 | 亚洲图片欧美色图 | 免费一级一片 | 黄色片99 | 国产精品www | 精品国自产在线观看 | 天天色成人网 | 国产免国产免‘费 | 五月天国色天香国语版 | 亚洲综合一二三 | 九九视频在线播放 | 艳妇乳肉豪妇荡乳xxx | 欧美精品高清 | 四虎影视永久 | 一本久久a久久精品亚洲 | 我要操av | 国产精品av久久久久久麻豆网 | 国产视频a| 欧美jizzhd欧美18 | 99re热这里只有精品视频 | 亚洲国产精品日韩av不卡在线 | 午夜不卡久久精品无码免费 | 午夜无码免费福利视频网址 | 91丨九色丨首页 | 大香伊人| 婷婷四房播播 | 粗大的内捧猛烈进出 | 欧美性黑人极品hd | 日韩在线不卡免费视频一区 | 五月天青青草 | 久久婷婷影视 | 成人韩免费网站 | 国产一区二区自拍视频 | 在线观看成人动漫 | 成 人 黄 色 视频免费播放 | 大桥未久亚洲无av码在线 | 美女上床网站 | 天堂国产欧美一区二区三区 | 国产福利姬喷水福利在线观看 | 国产黄色片子 | 石原莉奈一区二久久影视 | 欲妇荡岳丰满少妇岳 | 欧美黄色一级生活片 | 一区二区三区视频 | 久久精品无码一区二区三区 | 天天综合射 | 亚洲免费视频网 | 国产一区 在线播放 | 国产精品无码翘臀在线观看 | 亚洲社区在线观看 | 在线观看欧美精品 | 国产男女无遮挡猛进猛出 | 久久青草热 | 久久久久久久久久久91 | 国模无码大尺度一区二区三区 | 丰满少妇被猛烈进av毛片 | 少妇情欲一区二区影视 | 尤物网址在线观看 | 精精国产xxxx在线观看主放器 | 免费黄色三级 | 国产经典久久 | 99精产国品一二三产区区别麻豆 | 四虎久久久久 | 久久久av一区二区三区 | jizz自拍 | 日本在线免费播放 | 成人免费视频观看 | 男女乱淫真视频免费播放 | 精品久久久久久一区二区 | 日本黑人一区二区免费视频 | 男人j进入女人j内部免费网站 | 日本最新免费二区三区 | 草女人视频 | 99精品视频免费观看 | 免费av福利| 国产男女做爰免费网站 | 国产l精品国产亚洲区 | 高清av网址| 亚洲色图制服丝袜 | 精品久久8x国产免费观看 | 丰满人妻在公车被猛烈进入电影 | 日日爽爽 | 琪琪午夜伦埋影院77 | 去看片在线 | 国产手机在线αⅴ片无码观看 | 俄罗斯色片 | 久久久久久欧美精品se一二三四 | 国产一区二区三区成人久久片老牛 | 欧美日韩精品一区二区 | 国产精东天美av影视传媒 | 日韩国产一区二区三区四区 | 国内揄拍国内精品人妻 | 久久成人一区二区 | 亚洲国产成人精品无码区二本 | 久热最新视频 | 日本高清免费毛片大全awaaa | 哪里看毛片 | 国产精品99久久 | 欧洲亚洲视频 | 国产无套粉嫩白浆内谢网站 | 91精品久久久久久综合乱菊 | 三a大片 | 91精品视频在线播放 | 国产亚洲精品久久久久久牛牛 |