成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Nginx代理輸出縮放圖片的方法

Nginx代理輸出縮放圖片的方法

熱門標(biāo)簽:電銷機(jī)器人怎么錄音 ec外呼系統(tǒng)怎么樣 天津外呼系統(tǒng)運(yùn)營(yíng)商 貴陽(yáng)語(yǔ)音電銷機(jī)器人 貴港市機(jī)器人外呼系統(tǒng)團(tuán)隊(duì) 咸陽(yáng)穩(wěn)定外呼系統(tǒng)公司 征服者快捷酒店地圖標(biāo)注 漯河電銷外呼系統(tǒng)價(jià)格 蕪湖呼叫中心外呼系統(tǒng)哪家強(qiáng)

本文實(shí)例為大家分享了Nginx代理輸出縮放圖片的具體代碼,供大家參考,具體內(nèi)容如下

nginx 配置文件:

# document ppt convert Configuration.
upstream document.polyv.net {
 server 127.0.0.1:8080;
}

server {
 listen 80;
 server_name document.polyv.net;
 index index.html index.htm;
 charset utf-8;
 client_max_body_size 1000m;

 # ignore favicon.ico not exist.
 location = /favicon.ico {
  log_not_found off;
  access_log off;
 }

 # not allow to visit hidden files.
 location ~ /\. {
  deny all;
  access_log off;
  log_not_found off;
 }

 location / {
  if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {
   add_header Content-Disposition: 'attachment;';
   add_header Content-Type: 'APPLICATION/OCTET-STREAM';
  }

  proxy_pass http://document.polyv.net;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header REQUEST_HOST $host;

  # include proxy.conf;
  charset UTF-8;
 }

 # user upload files
 location /images/ {
   #expires 7d;
  alias /data03/ovp/blobs/;
   proxy_store on;
   proxy_store_access user:rw group:rw all:rw;
   proxy_set_header Accept-Encoding "";
   if ( !-f $request_filename ) {
    proxy_pass http://document.polyv.net;
   }
 }

 location /blobs/ {
   #expires 7d;
  alias /data03/ovp/blobs/;
 }

  location /preview/images/ {
   #expires 7d;
   alias /data03/ovp/blobs/;
   proxy_store on;
   proxy_store_access user:rw group:rw all:rw;
   proxy_set_header Accept-Encoding "";
   if ( !-f $request_filename ) {
    proxy_pass http://document.polyv.net;
   }
  }

}

代理輸出縮放圖片

package com.document.handle.controller;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import com.document.tool.ImageMagickUtils;
import com.document.tool.SystemConfig;

@Controller
public class ImageAgentController {

 private static final Logger LOG = LoggerFactory.getLogger(ImageAgentController.class);

 /**
  * ppt預(yù)覽圖片代理輸出
  * @throws IOException
  */
 @RequestMapping("/preview/images/{year}/{month}/{md5id}/{preview}/{filename}.{ext}")
 public void cropImage(@PathVariable String year, @PathVariable String month, @PathVariable String md5id,
   @PathVariable String preview, @PathVariable String filename, @PathVariable String ext,
   HttpServletRequest request, HttpServletResponse response) throws IOException {
  // String rootDir = "/data03/ovp/blobs/";
  String rootDir = SystemConfig.getBlobDirectory();
  String oname = filename.substring(1, filename.length());// 原圖文件名
  String dirString = rootDir + year + "/" + month + "/" + md5id + "/" + oname + "." + ext;
  String targetFileString = rootDir + year + "/" + month + "/" + md5id + "/preview/" + filename + "." + ext;

  //如果原圖存在
  File originImage = new File(oname);
  if(originImage.exists()){
   LOG.info("corpImage..." + dirString + " -> " + targetFileString);
   File newfile = new File(targetFileString);
   String pathString = newfile.getParent();
   LOG.info("pathString...{} {}", pathString);
   File pathFile = new File(pathString);
   if (!pathFile.exists()) {
    LOG.info("---create file---");
    pathFile.mkdirs();
   }
   boolean status = ImageMagickUtils.scale(dirString, targetFileString, 240, 180);
   if (status) {
    response.reset();
    response.setContentType("image/" + ext);

    java.io.InputStream in = new java.io.FileInputStream(targetFileString);
    // FilenameUrlUtils.getImageFilename(targetFileString);

    if (in != null) {
     byte[] b = new byte[1024];
     int len;
     while ((len = in.read(b)) != -1) {
      response.getOutputStream().write(b);
     }

     in.close();
    }
   }
  }else{
   LOG.info("原圖目錄不存在-preview:{}",dirString); 
  }
 }


 /**
  * ppt固定尺寸圖片代理輸出
  * @throws IOException
  * http://document.polyv.net/images/2016/03/de37d2ceb11ac068c18c5e4428541075/jpg-3/1000x540.png
  *
  * http://document.polyv.net/images/2016/03/de37d2ceb11ac068c18c5e4428541075/jpg-3.png
  */
 @RequestMapping("/images/{year}/{month}/{md5id}/{filename}/{width}x{height}.{ext}")
 public void cropfixedImage(@PathVariable String year, @PathVariable String month, @PathVariable String md5id,
   @PathVariable String filename, @PathVariable Integer width, @PathVariable Integer height, @PathVariable String ext,
   HttpServletRequest request, HttpServletResponse response) throws IOException {
  // String rootDir = "/data03/ovp/blobs/";
  String rootDir = SystemConfig.getBlobDirectory();
  //String oname = filename.substring(1, filename.length());// 原圖文件名
  String dirString = rootDir + year + "/" + month + "/" + md5id + "/" + ( filename + "." + ext);
  String targetFileString = rootDir + year + "/" + month + "/" + md5id + "/" + filename + "/" + (width + "x" + height + "." + ext);

  //如果原圖存在
  File originImage = new File(dirString);
  if(originImage.exists()){
   File targetFileStringFile = new File(targetFileString);
   if(!targetFileStringFile.exists()){
    LOG.info("corpImage..." + dirString + " -> " + targetFileString);
    File newfile = new File(targetFileString);
    String pathString = newfile.getParent();
    LOG.info("pathString...{} {}", pathString);
    File pathFile = new File(pathString);
    if (!pathFile.exists()) {
     LOG.info("---create file---");
     pathFile.mkdirs();
    }
    ImageMagickUtils.resizeWH(dirString, targetFileString,width,height);
   }
   response.setContentType("image/" + ext);
   java.io.InputStream in = null;
   try{
    in = new java.io.FileInputStream(targetFileString);
    response.setContentLength(in.available());
    byte[] buffer = new byte[1024];
    int count = 0;
    while ((count = in.read(buffer)) > 0) {
     response.getOutputStream().write(buffer, 0, count);
    }
    response.flushBuffer();
   }catch(Exception e){
    e.printStackTrace();
   }finally {
    try {
     in.close();
    } catch (Exception e) {

    }
   }
  }else{
   LOG.info("原圖目錄不存在:{}",dirString);
  }




 }


 /**
  * 圖片下載
  */
 @RequestMapping("get/image/data")
 public void downloadImage(HttpServletRequest request, HttpServletResponse response) throws IOException { 
  String filePath = ServletRequestUtils.getStringParameter(request, "filePath", ""); //圖片訪問(wèn)路勁
  String fileName = ServletRequestUtils.getStringParameter(request, "fileName", ""); //名稱

  if(StringUtils.isNotBlank(filePath) || StringUtils.isNotBlank(fileName)){
   String destUrl = filePath;
   //LOG.info("--------------"+filePath); 
   String fileFormat=filePath.substring(filePath.lastIndexOf("."));
   //String name=fileName.trim()+fileFormat;
   String name=filePath.substring(filePath.lastIndexOf("/")+1, filePath.length()); 
   //File f = new File(filePath);
   //response.setHeader("Content-Disposition", "attachment; filename="+java.net.URLEncoder.encode(f.getName(),"UTF-8")); 
   //LOG.info("--------------"+f.getName());

   // 建立鏈接 
   URL url = new URL(destUrl); 
   HttpURLConnection httpUrl = (HttpURLConnection) url.openConnection(); 
   // 連接指定的資源 
   httpUrl.connect(); 
   // 獲取網(wǎng)絡(luò)輸入流 
   BufferedInputStream bis = new BufferedInputStream(httpUrl.getInputStream()); 

   Integer lenf=httpUrl.getContentLength();
   //String lenf=this.getFileLength(4189053, 7189053);
   response.setContentType("application/x-msdownload"); 
   response.setHeader("Content-Length", lenf.toString());//文件大小值5幾M
   response.setHeader("Content-Disposition", "attachment; filename="+java.net.URLEncoder.encode(name,"UTF-8"));
   OutputStream out = response.getOutputStream();
   byte[] buf = new byte[1024]; 
   if (destUrl != null) { 
    BufferedInputStream br = bis; 
    int len = 0; 
    while ((len = br.read(buf)) > 0){ 
     out.write(buf, 0, len); 
    }     
    br.close(); 
   } 
   out.flush(); 
   out.close(); 
  }

 } 

}

圖片縮放的業(yè)務(wù)

package com.document.tool;

import java.io.IOException;

import javax.swing.ImageIcon;

import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecuteResultHandler;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.ExecuteWatchdog;
import org.apache.commons.exec.Executor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 使用ImageMagick對(duì)圖片文件進(jìn)行處理的工具類。
 * @author XingNing OU
 */
public abstract class ImageMagickUtils {

 private static final String EXECUTABLE_CONVERT = "/usr/bin/convert"; // convert命令

 private static final String EXECUTABLE_COMPOSITE = "/usr/bin/composite"; // composite命令

 private static final long EXECUTE_TIMEOUT = 30 * 60 * 1000L; // 30 minutes

 private static final Logger LOG = LoggerFactory.getLogger(ImageMagickUtils.class);

 /**
  * 執(zhí)行圖片處理的命令。
  * @param cmdLine 待執(zhí)行的命令
  * @return exitValue,一般等于0時(shí)表示正常運(yùn)行結(jié)束
  * @throws ExecuteException 命令執(zhí)行失敗時(shí)拋出此異常
  * @throws IOException 當(dāng)發(fā)生IO錯(cuò)誤時(shí)拋出此異常
  * @throws InterruptedException 當(dāng)?shù)却惒椒祷亟Y(jié)果被中斷時(shí)拋出此異常
  */
 public static int executeCommandLine(CommandLine cmdLine) throws ExecuteException, IOException,
 InterruptedException {
  Executor executor = new DefaultExecutor();
  executor.setExitValue(0);

  // Kill a run-away process after EXECUTE_TIME milliseconds.
  ExecuteWatchdog watchdog = new ExecuteWatchdog(EXECUTE_TIMEOUT);
  executor.setWatchdog(watchdog);

  // Execute the print job asynchronously.
  DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
  executor.execute(cmdLine, resultHandler);

  // Some time later the result handler callback was invoked.
  resultHandler.waitFor();

  // So we can safely request the exit value.
  return resultHandler.getExitValue();
 }

 /**
  * 按照高寬比例縮小圖片。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param width 圖片圖片的寬度
  * @param height 目標(biāo)圖片的高度
  * @return 是否處理成功
  */
 public static boolean scale(String src, String dst, int width, int height) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-scale");
  cmdLine.addArgument(width + "x" + height);
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("縮略圖片時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 按照高寬比例縮小圖片。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param width 圖片圖片的寬度
  * @param height 目標(biāo)圖片的高度
  * @return 是否處理成功
  */
 public static boolean thumbnail(String src, String dst, int width, int height) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-thumbnail");
  cmdLine.addArgument(width + "x" + height);
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("縮略圖片時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 添加圖片水印。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param logofile 水印圖片
  * @param dissolve 和水印的融合度,0-100的數(shù)字
  * @param gravity 疊放方向,East,West,North,South,NorthEast,NorthWest,SouthEast,SouthWest
  * @return 是否處理成功
  */
 public static boolean drawLogo(String src, String dst, String logofile, int dissolve, String gravity) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_COMPOSITE);
  cmdLine.addArgument("-dissolve");
  cmdLine.addArgument(dissolve + "%");
  cmdLine.addArgument("-gravity");
  cmdLine.addArgument(gravity);
  cmdLine.addArgument(logofile);
  cmdLine.addArgument(src);
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("添加圖片水印時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 添加圖片水印。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param logofile 水印圖片
  * @param dissolve 和水印的融合度,0-100的數(shù)字
  * @param x 水印距離左下角的距離
  * @param y 水印距離右下角的距離
  * @return 是否處理成功
  */
 public static boolean drawLogo(String src, String dst, String logofile, int dissolve, int x, int y) {
  ImageIcon icon = new ImageIcon(src);
  int width = icon.getIconWidth(); // 源圖的寬
  int height = icon.getIconHeight(); // 源圖的高

  String _x = String.valueOf(width - x); // 在x軸上水印圖片的左上頂點(diǎn)距離圖片左上角的距離
  String _y = String.valueOf(height - y); // 在y軸上水印圖片的左上頂點(diǎn)距離圖片左上角的距離

  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_COMPOSITE);
  cmdLine.addArgument("-dissolve");
  cmdLine.addArgument(dissolve + "%");
  cmdLine.addArgument("-geometry");
  cmdLine.addArgument(_x + "+" + _y);
  cmdLine.addArgument(logofile);
  cmdLine.addArgument(src);
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("添加圖片水印時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 裁剪圖片。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param width 目標(biāo)寬度
  * @param height 目標(biāo)高度
  * @param left 裁剪位置:距離左邊的像素
  * @param top 裁剪位置:距離上邊的像素
  * @return 是否處理成功
  */
 public static boolean crop(String src, String dst, int width, int height, int left, int top) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-crop");
  cmdLine.addArgument(width + "x" + height + "+" + left + "+" + top);
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("裁剪圖片時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 獲取矩形的小圖。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param width 目標(biāo)寬度
  * @param height 目標(biāo)高度
  * @param left 裁剪位置:距離左邊的像素
  * @param top 裁剪位置:距離上邊的像素
  * @return 是否處理成功
  */
 public static boolean cropRect(String src, String dst, int width, int height, int left, int top) {
  ImageIcon icon = new ImageIcon(src);
  int origWidth = icon.getIconWidth();
  int origHeight = icon.getIconHeight();
  int[] s = new int[2];
  if (origWidth < origHeight) { // 以寬為標(biāo)準(zhǔn)
   s = getSize(origWidth, origHeight, width, height, 1);
  } else {// 以高為標(biāo)準(zhǔn)
   s = getSize(origWidth, origHeight, width, height, 2);
  }

  if (thumbnail(src, dst, s[0], s[1])) {
   return crop(src, dst, width, height, left, top);
  }
  return false;
 }

 /**
  * 加邊框。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param borderWidth 邊框的寬度
  * @param borderHeight 邊框的高度
  * @param borderColor 邊框的顏色
  * @return 是否處理成功
  */
 public static boolean border(String src, String dst, int borderWidth, int borderHeight, String borderColor) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument("-bordercolor");
  cmdLine.addArgument(borderColor);
  cmdLine.addArgument("-border");
  cmdLine.addArgument(borderWidth + "x" + borderHeight);
  cmdLine.addArgument(src);
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("加圖片邊框時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 轉(zhuǎn)換圖片格式。
  * @param src 源圖片
  * @param dst 目標(biāo)圖片
  * @param format 轉(zhuǎn)換的格式
  * @return 是否處理成功
  */
 public static boolean format(String src, String dst, String format) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-format");
  cmdLine.addArgument("'" + format + "'");
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("轉(zhuǎn)換圖片格式時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 轉(zhuǎn)換無(wú)限極的TIFF圖片。
  */
 public static boolean convertTiff(String src, String dst) {  
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-colorspace");
  cmdLine.addArgument("RGB");
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("轉(zhuǎn)換圖片格式時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }


 /**
  * 獲得要壓縮圖片的大小。
  * @param w 圖片的原寬度
  * @param h 圖片的原高度
  * @param width 標(biāo)準(zhǔn)寬
  * @param height 標(biāo)準(zhǔn)高
  * @param type 類型 1-以寬為標(biāo)準(zhǔn)壓縮 2-以高為標(biāo)準(zhǔn)壓縮 3-以比例大小壓縮
  * @return size[0]-要壓縮的寬度, size[1]-要壓縮的高度
  */
 public static int[] getSize(double w, double h, double width, double height, int type) {
  if (w < width) {// 如果原寬度比標(biāo)準(zhǔn)寬度小
   width = w;
  }
  if (h < height) {// 如果原高度比標(biāo)準(zhǔn)高度小
   height = h;
  }
  double scale = w / h;
  switch (type) {
   case 1:
    height = width / scale;
    break;
   case 2:
    width = height * scale;
    break;
   case 3:
    if (width / height > scale) {
     width = height * scale;
    } else if ((width / height) < scale) {
     height = width / scale;
    }
    break;
  }
  int[] size = new int[2];
  size[0] = (int) width;
  size[1] = (int) height;
  return size;
 }


 /**
  * 指定寬度。
  * @param src
  * @param width
  * @param dst
  */
 public static boolean resize(String src, int width, String dst) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-resize");
  cmdLine.addArgument(width + "");
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("縮略圖片時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }

 /**
  * 指定寬度、高度。
  * @param src
  * @param width
  * @param dst
  */
 public static boolean resizeWH(String src,String dst, int width, int height ) {
  // 構(gòu)建命令
  CommandLine cmdLine = new CommandLine(EXECUTABLE_CONVERT);
  cmdLine.addArgument(src);
  cmdLine.addArgument("-resize");
  cmdLine.addArgument(width + "x" + height +"!");
  cmdLine.addArgument(dst);

  try {
   executeCommandLine(cmdLine);
   return true;
  } catch (Exception e) {
   LOG.error("縮略圖片時(shí)發(fā)生異常,Cause: ", e);
   return false;
  }
 }
}

服務(wù)器上要安裝imagemagick。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:香港 淮北 怒江 西藏 攀枝花 西寧 濰坊 東營(yíng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx代理輸出縮放圖片的方法》,本文關(guān)鍵詞  Nginx,代理,輸出,縮放,圖片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Nginx代理輸出縮放圖片的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Nginx代理輸出縮放圖片的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美日本一道本| 一本色道久久综合熟妇| 蜜桃av一区二区在线观看| 都市激情久久| 国产又粗又黄又爽| 成人av在线资源| 亚洲一区二区三区久久| 亚洲图片欧美日产| 在线一区二区三区做爰视频网站| 老司机免费在线视频| 久久久久一本一区二区青青蜜月| 亚洲综合色av| 精品视频在线播放一区二区三区| 麻豆视频入口| 2019中文字幕免费视频| 国产精品一区二区av影院萌芽| 国产污视频网站| 久久99精品久久久久久三级| 久久精品视频网| 特黄视频在线观看| 在线免费一区| 国产精品国产一区二区| 亚洲图片欧美| 日韩一二三在线视频播| 日本女优北野望在线电影| 日本在线观看一区二区三区| ㊣最新国产の精品bt伙计久久| www在线免费观看| 人人澡人人澡人人看| 岛国精品一区二区三区| 人人在线97| 国产精品午夜春色av| 2020亚洲男人天堂| 国产成人精品无码高潮| 亚洲另类自拍| 久久久人人爽| 精品国产成人av| 亚洲精品五月天| 天堂av在线网| 欧美经典三级视频一区二区三区| 又大又长粗又爽又黄少妇视频| 黄色免费视频观看| 日本黄色录像片| 上原亚衣av一区二区三区| 欧美丰满熟妇xxxxx| 亚洲欧美在线一区| 免费观看亚洲视频大全| 成人欧美一区二区三区黑人一| 成人av番号网| 精品无人区无码乱码毛片国产| 日日夜夜狠狠操| 日本欧美www| 亚洲国产精品久久久久秋霞影院| 久久99国产精品自在自在app| 欧美jizzhd精品欧美满| 韩国xxxx做受gayxxxx| 色欲一区二区三区精品a片| 欧美一区=区| 亚洲激情免费观看| 欧美 日韩 国产一区二区在线视频| 成人精品国产免费网站| 九九久久九九| 日韩一级片在线播放| 中文字幕2022永久在线| 国产精品久久久久久亚洲影视| 蜜臀视频一区二区三区| 国产欧美一区二区在线| 国产一区二区在线观看免费视频| 免费观看黄色av| 欧美福利视频在线| 国产又粗又长又黄的视频| 一级黄色片国产| 91l九色lporny| 成人国产精品免费观看动漫| www一区二区三区| 日韩在线www| 精品乱子伦一区二区三区| 极品中文字幕一区| 国产精品第13页| 男人的天堂av高清在线| 成人av资源电影网站| 欧美亚洲一区| 欧美在线综合| 黄色网页在线| 麻豆91在线播放| 午夜精品av| 成人国产精品免费观看动漫| 欧美综合天天夜夜久久| 亚洲男女毛片无遮挡| 男人操女人免费| 激情成人午夜视频| 国产成人av电影在线| 欧美一级欧美一级在线播放| 久久久久久久久久久一区| 国产精品国产三级国产普通话三级| 97精品久久人人爽人人爽| 国产精品一区在线观看你懂的| 中文字幕乱码人妻二区三区| 丁香五精品蜜臀久久久久99网站| 91在线中文| 美女高潮在线观看| 午夜精品一区二区三区视频免费看| 亚洲丝袜自拍清纯另类| 青青草国产精品亚洲专区无| 日韩中文一区| 国产一级片免费在线观看| 国产一区二区香蕉| 一本一本大道香蕉久在线精品| 99久久99热久久精品免费看| 欧美成人小视频| 欧美一区二不卡视频| 日本久久久久久久久| 国产男人精品视频| 国产欧美一区二区三区久久| 精品福利在线视频| 精品国产乱子伦一区二区| 国产麻豆精品视频| 日本高清久久久| 日韩福利在线| 欧美一区二区日韩| 免费一区二区三区在线观看| 国产成人免费在线观看视频| 欧美日韩国产黄色| 国产精品人成在线观看免费| 夜夜摸夜夜操| xxxx 国产| 老司机免费视频一区二区三区| 国产精品亚洲成在人线| 韩国三级日本三级少妇99| 免费黄色av电影| 激情综合网最新| 五十路在线视频| 欧美高清无遮挡| 中文字幕一区二区三区中文字幕| 91精品啪在线观看国产爱臀| 日韩精品欧美| 欧美亚洲丝袜传媒另类| 精品污污网站免费看| 亚洲最好看的视频| 免费成人动漫| 午夜视频一区在线观看| 久久99精品国产麻豆婷婷洗澡| 你懂的视频在线观看资源| 成人福利网址| 一区二区亚洲欧洲国产日韩| 国产一区你懂的| 亚洲天堂一级片| 国产一区二区三区奇米久涩| 欧美搞黄网站| 久久亚洲综合网| 欧美日韩精选| 亚洲国产日韩欧美在线图片| 丝袜美腿成人在线| 都市激情在线视频| 666av成人影院在线观看| 特大巨黑人吊性xxx视频| 欧美精品观看| 黄网站在线播放| 久久久精品国产免大香伊| 欧美猛交ⅹxxx乱大交视频| 在线播放日韩专区| 5566中文字幕一区二区| 五月天婷婷影视| 免费不卡亚洲欧美| a级片在线视频| 99riav视频一区二区| 欧美日韩中文字幕日韩欧美| 在线观看国产福利| 樱花在线免费观看| 草莓视频末满18勿| 欧美不卡三区| 成人亚洲精品777777大片| 国产精品视频白浆免费视频| 日韩国产激情在线| 国产又粗又长又爽又黄的视频| 日韩欧美亚洲v片| 中文字幕第99页| 久久青草福利网站| 国产剧情在线观看一区| 日本激情视频一区二区三区| 中国女人久久久| 成人午夜电影在线播放| 亚洲欧美视频一区二区| 久操av在线| 丁香啪啪综合成人亚洲小说| www国产精品| 精品国产a毛片| 成人美女大片| 交换做爰国语对白| 日本伦理一区二区三区| 欧美精品一区二区三区久久久| 三级成人在线视频| 超碰在线公开| 久久免费看毛片| 免费观影入口看日本视频| 在线观看免费高清视频97| 91豆麻精品91久久久久久| 国产精品免费精品一区| 黄色激情视频在线观看| 亚洲免费成人av电影| 91精品国产一区| 91在线视频免费播放| 国产精品电影观看| 麻豆传媒免费在线观看| 国产精品久久久久影院老司| 日韩网站免费观看| 日本一区二区不卡| 欧美性受xxxx黑人爽| 国产三级视频| 成人观看网址| 欧美色欧美亚洲另类二区| 中文字幕日韩第一页| 欧美中文在线观看| 最近2018中文字幕免费在线视频| 日韩视频一区二区在线观看| 337p亚洲精品色噜噜噜| 欧美日韩二三区| 正在播放国产精品| 中文字幕乱伦视频| 亚洲欧洲自拍偷拍| 熟妇人妻系列aⅴ无码专区友真希| 日韩一区二区a片免费观看| 中文字幕被公侵犯的漂亮人妻| 欧美视频亚洲视频| 久久久久久网址| 一区二区日韩免费看| 国偷自产av一区二区三区小尤奈| 一道在线中文一区二区三区| 在线精品视频一区二区三四| 精品日产一区2区三区黄免费| 亚洲天天做日日做天天谢日日欢| 蜜桃av噜噜一区二区三区小说| av欧美精品.com| 四虎成人影院网址| 免费无码一区二区三区| 性欧美在线视频| 91精品视频免费看| 欧美日韩在线影院| 久久先锋影音| 成人av在线播放| 国产一级在线视频| 亚洲91网站| 在线国产情侣| 日本韩国欧美国产| 日韩欧美高清| 日韩欧美一中文字暮专区| 欧美视频一区二区三区在线观看| 欧美日韩一区综合| 99久久久无码国产精品性波多| 色开心亚洲综合| 无码国产精品久久一区免费| 青青操在线视频| 奇米综合一区二区三区精品视频| 国产综合精品一区二区三区| 福利视频在线播放| 国产高清精品一区| 中文精品99久久国产香蕉| 在线观看18视频网站| 天堂v在线视频| 在线日韩电影| 亚洲图片综合网| 精品欧美一区二区三区免费观看| 自拍偷拍校园春色| 国产乱肥老妇国产一区二| 可以免费看不卡的av网站| 一本大道香蕉8中文在线视频| 日韩精品另类天天更新| 欧美性在线观看| 国产剧情久久久久久| 国产偷亚洲偷欧美偷精品| 影音先锋中文一区| 亚洲欧美一区二区三区情侣bbw| 亚洲欧美在线aaa| 最近中文字幕在线视频| 日韩精品手机在线观看| 欧美噜噜久久久xxx| 日韩av在线综合| 蓝色福利精品导航| 成年网在线观看免费观看网址| 人妖欧美1区| 日韩成人三级| 亚洲影院免费观看| xxxxaaa欧美另类| 99久久久无码国产精品不卡| 久久众筹精品私拍模特| 久播影院第一理论片| 久久久久中文字幕2018| 国产乱码一区二区三区| 中文字幕欧美国产| 男人的天堂在线| av在线这里只有精品| 欧美日韩美女在线观看| 日韩伦理一区二区三区av在线| 国产精品偷伦一区二区| 日韩成人免费在线观看| 成人免费黄色| 国产精品一在线观看| 国产乱淫av片免费| 有码在线播放| 国产精品亚洲网站| 国产午夜在线观看| 国产农村av| 91在线不卡| 亚洲色图美腿丝袜| 国产精品麻豆视频| 日本一本在线免费福利| 成人做爰视频www| 免费高清视频在线观看| 国产精品爱啪在线线免费观看| 亚洲大胆人体视频| 成人污污视频在线观看| 美女毛片在线看| 洋洋av久久久久久久一区| 26uuu精品一区二区三区四区在线| 四虎成年永久免费网站| 日韩系列在线| 欧美丰满一区二区免费视频| 国产黄色一级电影| 国产九色在线播放九色| 亚洲精品mv| 成人在线观看免费视频| 男女性高潮免费网站| 导航福利在线| 亚洲免费电影在线观看| 午夜精品电影| 国产精品视频内| 欧美性淫爽ww久久久久无| 久久久久久久久免费看无码|