3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java gif_使用Java来处理GIF图片

發布時間:2023/12/2 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java gif_使用Java来处理GIF图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個2個類,一個是讀圖片的類GifDecoder,一個是寫圖片的類AnimatedGifEncoder

使用還是挺方便的,下面舉個栗子

public static void main(String[] args) throws IOException {

GifDecoder decoder = new GifDecoder();

int status = decoder.read("C:\\Users\\Administrator\\Desktop\\bigImage\\07.gif");

if (status != GifDecoder.STATUS_OK) {

throw new IOException("read image error!");

}

AnimatedGifEncoder e = new AnimatedGifEncoder();

//保存的目標圖片

e.start("C:\\Users\\Administrator\\Desktop\\bigImage\\cc.gif");

e.setRepeat(decoder.getLoopCount());

e.setDelay(decoder.getDelay(0));

for (int i = 0; i < decoder.getFrameCount(); i++) {

BufferedImage image = decoder.getFrame(i);

//可以加入對圖片的處理,比如縮放,壓縮質量

e.addFrame(image);

}

e.finish();

}

import java.awt.AlphaComposite;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.image.BufferedImage;

import java.awt.image.DataBufferInt;

import java.io.BufferedInputStream;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

public class GifDecoder {

/**

* File read status: No errors.

*/

public static final int STATUS_OK = 0;

/**

* File read status: Error decoding file (may be partially decoded)

*/

public static final int STATUS_FORMAT_ERROR = 1;

/**

* File read status: Unable to open source.

*/

public static final int STATUS_OPEN_ERROR = 2;

protected BufferedInputStream in;

protected int status;

protected int width; // full image width

protected int height; // full image height

protected boolean gctFlag; // global color table used

protected int gctSize; // size of global color table

protected int loopCount = 1; // iterations; 0 = repeat forever

protected int[] gct; // global color table

protected int[] lct; // local color table

protected int[] act; // active color table

protected int bgIndex; // background color index

protected int bgColor; // background color

protected int lastBgColor; // previous bg color

protected int pixelAspect; // pixel aspect ratio

protected boolean lctFlag; // local color table flag

protected boolean interlace; // interlace flag

protected int lctSize; // local color table size

protected int ix, iy, iw, ih; // current image rectangle

protected Rectangle lastRect; // last image rect

protected BufferedImage image; // current frame

protected BufferedImage lastImage; // previous frame

protected byte[] block = new byte[256]; // current data block

protected int blockSize = 0; // block size

// last graphic control extension info

protected int dispose = 0;

// 0=no action; 1=leave in place; 2=restore to bg; 3=restore to prev

protected int lastDispose = 0;

protected boolean transparency = false; // use transparent color

protected int delay = 0; // delay in milliseconds

protected int transIndex; // transparent color index

protected static final int MaxStackSize = 4096;

// max decoder pixel stack size

// LZW decoder working arrays

protected short[] prefix;

protected byte[] suffix;

protected byte[] pixelStack;

protected byte[] pixels;

protected ArrayList frames; // frames read from current file

protected int frameCount;

static class GifFrame {

public GifFrame(BufferedImage im, int del) {

image = im;

delay = del;

}

public BufferedImage image;

public int delay;

}

/**

* Gets display duration for specified frame.

*

* @param n int index of frame

* @return delay in milliseconds

*/

public int getDelay(int n) {

//

delay = -1;

if ((n >= 0) && (n < frameCount)) {

delay = ((GifFrame) frames.get(n)).delay;

}

return delay;

}

/**

* Gets the number of frames read from file.

*

* @return frame count

*/

public int getFrameCount() {

return frameCount;

}

/**

* Gets the first (or only) image read.

*

* @return BufferedImage containing first frame, or null if none.

*/

public BufferedImage getImage() {

return getFrame(0);

}

/**

* Gets the "Netscape" iteration count, if any. A count of 0 means repeat indefinitiely.

*

* @return iteration count if one was specified, else 1.

*/

public int getLoopCount() {

return loopCount;

}

/**

* Creates new frame image from current data (and previous frames as specified by their disposition codes).

*/

protected void setPixels() {

// expose destination image's pixels as int array

int[] dest = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();

// fill in starting image contents based on last image's dispose code

if (lastDispose > 0) {

if (lastDispose == 3) {

// use image before last

int n = frameCount - 2;

if (n > 0) {

lastImage = getFrame(n - 1);

} else {

lastImage = null;

}

}

if (lastImage != null) {

int[] prev = ((DataBufferInt) lastImage.getRaster().getDataBuffer()).getData();

System.arraycopy(prev, 0, dest, 0, width * height);

// copy pixels

if (lastDispose == 2) {

// fill last image rect area with background color

Graphics2D g = image.createGraphics();

Color c = null;

if (transparency) {

c = new Color(0, 0, 0, 0); // assume background is transparent

} else {

c = new Color(lastBgColor); // use given background color

}

g.setColor(c);

g.setComposite(AlphaComposite.Src); // replace area

g.fill(lastRect);

g.dispose();

}

}

}

// copy each source line to the appropriate place in the destination

int pass = 1;

int inc = 8;

int iline = 0;

for (int i = 0; i < ih; i++) {

int line = i;

if (interlace) {

if (iline >= ih) {

pass++;

switch (pass) {

case 2:

iline = 4;

break;

case 3:

iline = 2;

inc = 4;

break;

case 4:

iline = 1;

inc = 2;

}

}

line = iline;

iline += inc;

}

line += iy;

if (line < height) {

int k = line * width;

int dx = k + ix; // start of line in dest

int dlim = dx + iw; // end of dest line

if ((k + width) < dlim) {

dlim = k + width; // past dest edge

}

int sx = i * iw; // start of line in source

while (dx < dlim) {

// map color and insert in destination

int index = ((int) pixels[sx++]) & 0xff;

int c = act[index];

if (c != 0) {

dest[dx] = c;

}

dx++;

}

}

}

}

/**

* Gets the image contents of frame n.

*

* @return BufferedImage representation of frame, or null if n is invalid.

*/

public BufferedImage getFrame(int n) {

BufferedImage im = null;

if ((n >= 0) && (n < frameCount)) {

im = ((GifFrame) frames.get(n)).image;

}

return im;

}

/**

* Gets the image contents

*

* @return BufferedImage representation of frame, or null if n is invalid.

*/

public List getFrames() {

List bms = new ArrayList();

for (GifFrame frame : this.frames) {

bms.add(frame.image);

}

return bms;

}

/**

* Gets image size.

*

* @return GIF image dimensions

*/

public Dimension getFrameSize() {

return new Dimension(width, height);

}

/**

* Reads GIF image from stream

*

* @param BufferedInputStream containing GIF file.

* @return read status code (0 = no errors)

*/

public int read(BufferedInputStream is) {

init();

if (is != null) {

in = is;

readHeader();

if (!err()) {

readContents();

if (frameCount < 0) {

status = STATUS_FORMAT_ERROR;

}

}

} else {

status = STATUS_OPEN_ERROR;

}

try {

is.close();

} catch (IOException e) {

}

return status;

}

/**

* Reads GIF image from stream

*

* @param InputStream containing GIF file.

* @return read status code (0 = no errors)

*/

public int read(InputStream is) {

init();

if (is != null) {

if (!(is instanceof BufferedInputStream))

is = new BufferedInputStream(is);

in = (BufferedInputStream) is;

readHeader();

if (!err()) {

readContents();

if (frameCount < 0) {

status = STATUS_FORMAT_ERROR;

}

}

} else {

status = STATUS_OPEN_ERROR;

}

try {

is.close();

} catch (IOException e) {

}

return status;

}

/**

* Reads GIF file from specified file/URL source (URL assumed if name contains ":/" or "file:")

*

* @param name String containing source

* @return read status code (0 = no errors)

*/

public int read(String name) {

status = STATUS_OK;

try {

name = name.trim().toLowerCase();

if ((name.indexOf("file:") >= 0) || (name.indexOf(":/") > 0)) {

URL url = new URL(name);

in = new BufferedInputStream(url.openStream());

} else {

in = new BufferedInputStream(new FileInputStream(name));

}

status = read(in);

} catch (IOException e) {

status = STATUS_OPEN_ERROR;

}

return status;

}

/**

* Decodes LZW image data into pixel array. Adapted from John Cristy's ImageMagick.

*/

protected void decodeImageData() {

int NullCode = -1;

int npix = iw * ih;

int available, clear, code_mask, code_size, end_of_information, in_code, old_code, bits, code, count, i, datum, data_size, first,

top, bi, pi;

if ((pixels == null) || (pixels.length < npix)) {

pixels = new byte[npix]; // allocate new pixel array

}

if (prefix == null)

prefix = new short[MaxStackSize];

if (suffix == null)

suffix = new byte[MaxStackSize];

if (pixelStack == null)

pixelStack = new byte[MaxStackSize + 1];

// Initialize GIF data stream decoder.

data_size = read();

clear = 1 << data_size;

end_of_information = clear + 1;

available = clear + 2;

old_code = NullCode;

code_size = data_size + 1;

code_mask = (1 << code_size) - 1;

for (code = 0; code < clear; code++) {

prefix[code] = 0;

suffix[code] = (byte) code;

}

// Decode GIF pixel stream.

datum = bits = count = first = top = pi = bi = 0;

for (i = 0; i < npix;) {

if (top == 0) {

if (bits < code_size) {

// Load bytes until there are enough bits for a code.

if (count == 0) {

// Read a new data block.

count = readBlock();

if (count <= 0)

break;

bi = 0;

}

datum += (((int) block[bi]) & 0xff) << bits;

bits += 8;

bi++;

count--;

continue;

}

// Get the next code.

code = datum & code_mask;

datum >>= code_size;

bits -= code_size;

// Interpret the code

if ((code > available) || (code == end_of_information))

break;

if (code == clear) {

// Reset decoder.

code_size = data_size + 1;

code_mask = (1 << code_size) - 1;

available = clear + 2;

old_code = NullCode;

continue;

}

if (old_code == NullCode) {

pixelStack[top++] = suffix[code];

old_code = code;

first = code;

continue;

}

in_code = code;

if (code == available) {

pixelStack[top++] = (byte) first;

code = old_code;

}

while (code > clear) {

pixelStack[top++] = suffix[code];

code = prefix[code];

}

first = ((int) suffix[code]) & 0xff;

// Add a new string to the string table,

if (available >= MaxStackSize)

break;

pixelStack[top++] = (byte) first;

prefix[available] = (short) old_code;

suffix[available] = (byte) first;

available++;

if (((available & code_mask) == 0) && (available < MaxStackSize)) {

code_size++;

code_mask += available;

}

old_code = in_code;

}

// Pop a pixel off the pixel stack.

top--;

pixels[pi++] = pixelStack[top];

i++;

}

for (i = pi; i < npix; i++) {

pixels[i] = 0; // clear missing pixels

}

}

/**

* Returns true if an error was encountered during reading/decoding

*/

protected boolean err() {

return status != STATUS_OK;

}

/**

* Initializes or re-initializes reader

*/

protected void init() {

status = STATUS_OK;

frameCount = 0;

frames = new ArrayList();

gct = null;

lct = null;

}

/**

* Reads a single byte from the input stream.

*/

protected int read() {

int curByte = 0;

try {

curByte = in.read();

} catch (IOException e) {

status = STATUS_FORMAT_ERROR;

}

return curByte;

}

/**

* Reads next variable length block from input.

*

* @return number of bytes stored in "buffer"

*/

protected int readBlock() {

blockSize = read();

int n = 0;

if (blockSize > 0) {

try {

int count = 0;

while (n < blockSize) {

count = in.read(block, n, blockSize - n);

if (count == -1)

break;

n += count;

}

} catch (IOException e) {

}

if (n < blockSize) {

status = STATUS_FORMAT_ERROR;

}

}

return n;

}

/**

* Reads color table as 256 RGB integer values

*

* @param ncolors int number of colors to read

* @return int array containing 256 colors (packed ARGB with full alpha)

*/

protected int[] readColorTable(int ncolors) {

int nbytes = 3 * ncolors;

int[] tab = null;

byte[] c = new byte[nbytes];

int n = 0;

try {

n = in.read(c);

} catch (IOException e) {

}

if (n < nbytes) {

status = STATUS_FORMAT_ERROR;

} else {

tab = new int[256]; // max size to avoid bounds checks

int i = 0;

int j = 0;

while (i < ncolors) {

int r = ((int) c[j++]) & 0xff;

int g = ((int) c[j++]) & 0xff;

int b = ((int) c[j++]) & 0xff;

tab[i++] = 0xff000000 | (r << 16) | (g << 8) | b;

}

}

return tab;

}

/**

* Main file parser. Reads GIF content blocks.

*/

protected void readContents() {

// read GIF file content blocks

boolean done = false;

while (!(done || err())) {

int code = read();

switch (code) {

case 0x2C: // image separator

readImage();

break;

case 0x21: // extension

code = read();

switch (code) {

case 0xf9: // graphics control extension

readGraphicControlExt();

break;

case 0xff: // application extension

readBlock();

String app = "";

for (int i = 0; i < 11; i++) {

app += (char) block[i];

}

if (app.equals("NETSCAPE2.0")) {

readNetscapeExt();

} else

skip(); // don't care

break;

default: // uninteresting extension

skip();

}

break;

case 0x3b: // terminator

done = true;

break;

case 0x00: // bad byte, but keep going and see what happens

break;

default:

status = STATUS_FORMAT_ERROR;

}

}

}

/**

* Reads Graphics Control Extension values

*/

protected void readGraphicControlExt() {

read(); // block size

int packed = read(); // packed fields

dispose = (packed & 0x1c) >> 2; // disposal method

if (dispose == 0) {

dispose = 1; // elect to keep old image if discretionary

}

transparency = (packed & 1) != 0;

delay = readShort() * 10; // delay in milliseconds

transIndex = read(); // transparent color index

read(); // block terminator

}

/**

* Reads GIF file header information.

*/

protected void readHeader() {

String id = "";

for (int i = 0; i < 6; i++) {

id += (char) read();

}

if (!id.startsWith("GIF")) {

status = STATUS_FORMAT_ERROR;

return;

}

readLSD();

if (gctFlag && !err()) {

gct = readColorTable(gctSize);

bgColor = gct[bgIndex];

}

}

/**

* Reads next frame image

*/

protected void readImage() {

ix = readShort(); // (sub)image position & size

iy = readShort();

iw = readShort();

ih = readShort();

int packed = read();

lctFlag = (packed & 0x80) != 0; // 1 - local color table flag

interlace = (packed & 0x40) != 0; // 2 - interlace flag

// 3 - sort flag

// 4-5 - reserved

lctSize = 2 << (packed & 7); // 6-8 - local color table size

if (lctFlag) {

lct = readColorTable(lctSize); // read table

act = lct; // make local table active

} else {

act = gct; // make global table active

if (bgIndex == transIndex)

bgColor = 0;

}

int save = 0;

if (transparency) {

save = act[transIndex];

act[transIndex] = 0; // set transparent color if specified

}

if (act == null) {

status = STATUS_FORMAT_ERROR; // no color table defined

}

if (err())

return;

decodeImageData(); // decode pixel data

skip();

if (err())

return;

frameCount++;

// create new image to receive frame data

image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);

setPixels(); // transfer pixel data to image

frames.add(new GifFrame(image, delay)); // add image to frame list

if (transparency) {

act[transIndex] = save;

}

resetFrame();

}

/**

* Reads Logical Screen Descriptor

*/

protected void readLSD() {

// logical screen size

width = readShort();

height = readShort();

// packed fields

int packed = read();

gctFlag = (packed & 0x80) != 0; // 1 : global color table flag

// 2-4 : color resolution

// 5 : gct sort flag

gctSize = 2 << (packed & 7); // 6-8 : gct size

bgIndex = read(); // background color index

pixelAspect = read(); // pixel aspect ratio

}

/**

* Reads Netscape extenstion to obtain iteration count

*/

protected void readNetscapeExt() {

do {

readBlock();

if (block[0] == 1) {

// loop count sub-block

int b1 = ((int) block[1]) & 0xff;

int b2 = ((int) block[2]) & 0xff;

loopCount = (b2 << 8) | b1;

}

} while ((blockSize > 0) && !err());

}

/**

* Reads next 16-bit value, LSB first

*/

protected int readShort() {

// read 16-bit value, LSB first

return read() | (read() << 8);

}

/**

* Resets frame state for reading next image.

*/

protected void resetFrame() {

lastDispose = dispose;

lastRect = new Rectangle(ix, iy, iw, ih);

lastImage = image;

lastBgColor = bgColor;

// int dispose = 0;

// boolean transparency = false;

// int delay = 0;

lct = null;

}

protected void skip() {

do {

readBlock();

} while ((blockSize > 0) && !err());

}

}

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.awt.image.DataBufferByte;

import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

/**

* Class AnimatedGifEncoder - Encodes a GIF file consisting of one or more frames.

*

*

* Example:

* AnimatedGifEncoder e = new AnimatedGifEncoder();

* e.start(outputFileName);

* e.setDelay(1000); // 1 frame per sec

* e.addFrame(image1);

* e.addFrame(image2);

* e.finish();

*

*

* No copyright asserted on the source code of this class. May be used for any purpose, however, refer to the Unisys LZW patent for

* restrictions on use of the associated LZWEncoder class. Please forward any corrections to kweiner@fmsware.com.

*

* @author Kevin Weiner, FM Software

* @version 1.03 November 2003

*

*/

public class AnimatedGifEncoder {

protected int width; // image size

protected int height;

protected Color transparent = null; // transparent color if given

protected int transIndex; // transparent index in color table

protected int repeat = -1; // no repeat

protected int delay = 0; // frame delay (hundredths)

protected boolean started = false; // ready to output frames

protected OutputStream out;

protected BufferedImage image; // current frame

protected byte[] pixels; // BGR byte array from frame

protected byte[] indexedPixels; // converted frame indexed to palette

protected int colorDepth; // number of bit planes

protected byte[] colorTab; // RGB palette

protected boolean[] usedEntry = new boolean[256]; // active palette entries

protected int palSize = 7; // color table size (bits-1)

protected int dispose = -1; // disposal code (-1 = use default)

protected boolean closeStream = false; // close stream when finished

protected boolean firstFrame = true;

protected boolean sizeSet = false; // if false, get size from first frame

protected int sample = 10; // default sample interval for quantizer

/**

* Sets the delay time between each frame, or changes it for subsequent frames (applies to last frame added).

*

* @param ms int delay time in milliseconds

*/

public void setDelay(int ms) {

delay = Math.round(ms / 10.0f);

}

/**

* Sets the GIF frame disposal code for the last added frame and any subsequent frames. Default is 0 if no transparent color has been

* set, otherwise 2.

*

* @param code int disposal code.

*/

public void setDispose(int code) {

if (code >= 0) {

dispose = code;

}

}

/**

* Sets the number of times the set of GIF frames should be played. Default is 1; 0 means play indefinitely. Must be invoked before the

* first image is added.

*

* @param iter int number of iterations.

* @return

*/

public void setRepeat(int iter) {

if (iter >= 0) {

repeat = iter;

}

}

/**

* Sets the transparent color for the last added frame and any subsequent frames. Since all colors are subject to modification in the

* quantization process, the color in the final palette for each frame closest to the given color becomes the transparent color for that

* frame. May be set to null to indicate no transparent color.

*

* @param c Color to be treated as transparent on display.

*/

public void setTransparent(Color c) {

transparent = c;

}

/**

* Adds next GIF frame. The frame is not written immediately, but is actually deferred until the next frame is received so that timing

* data can be inserted. Invoking finish() flushes all frames. If setSize was not invoked, the size of the

* first image is used for all subsequent frames.

*

* @param im BufferedImage containing frame to write.

* @return true if successful.

*/

public boolean addFrame(BufferedImage im) {

if ((im == null) || !started) {

return false;

}

boolean ok = true;

try {

if (!sizeSet) {

// use first frame's size

setSize(im.getWidth(), im.getHeight());

}

image = im;

getImagePixels(); // convert to correct format if necessary

analyzePixels(); // build color table & map pixels

if (firstFrame) {

writeLSD(); // logical screen descriptior

writePalette(); // global color table

if (repeat >= 0) {

// use NS app extension to indicate reps

writeNetscapeExt();

}

}

writeGraphicCtrlExt(); // write graphic control extension

writeImageDesc(); // image descriptor

if (!firstFrame) {

writePalette(); // local color table

}

writePixels(); // encode and write pixel data

firstFrame = false;

} catch (IOException e) {

ok = false;

}

return ok;

}

/**

* Flushes any pending data and closes output file. If writing to an OutputStream, the stream is not closed.

*/

public boolean finish() {

if (!started)

return false;

boolean ok = true;

started = false;

try {

out.write(0x3b); // gif trailer

out.flush();

if (closeStream) {

out.close();

}

} catch (IOException e) {

ok = false;

}

// reset for subsequent use

transIndex = 0;

out = null;

image = null;

pixels = null;

indexedPixels = null;

colorTab = null;

closeStream = false;

firstFrame = true;

return ok;

}

/**

* Sets frame rate in frames per second. Equivalent to setDelay(1000/fps).

*

* @param fps float frame rate (frames per second)

*/

public void setFrameRate(float fps) {

if (fps != 0f) {

delay = Math.round(100f / fps);

}

}

/**

* Sets quality of color quantization (conversion of images to the maximum 256 colors allowed by the GIF specification). Lower values

* (minimum = 1) produce better colors, but slow processing significantly. 10 is the default, and produces good color mapping at

* reasonable speeds. Values greater than 20 do not yield significant improvements in speed.

*

* @param quality int greater than 0.

* @return

*/

public void setQuality(int quality) {

if (quality < 1)

quality = 1;

sample = quality;

}

/**

* Sets the GIF frame size. The default size is the size of the first frame added if this method is not invoked.

*

* @param w int frame width.

* @param h int frame width.

*/

public void setSize(int w, int h) {

if (started && !firstFrame)

return;

width = w;

height = h;

if (width < 1)

width = 320;

if (height < 1)

height = 240;

sizeSet = true;

}

/**

* Initiates GIF file creation on the given stream. The stream is not closed automatically.

*

* @param os OutputStream on which GIF images are written.

* @return false if initial write failed.

*/

public boolean start(OutputStream os) {

if (os == null)

return false;

boolean ok = true;

closeStream = false;

out = os;

try {

writeString("GIF89a"); // header

} catch (IOException e) {

ok = false;

}

return started = ok;

}

/**

* Initiates writing of a GIF file with the specified name.

*

* @param file String containing output file name.

* @return false if open or initial write failed.

*/

public boolean start(String file) {

boolean ok = true;

try {

out = new BufferedOutputStream(new FileOutputStream(file));

ok = start(out);

closeStream = true;

} catch (IOException e) {

ok = false;

}

return started = ok;

}

/**

* Analyzes image colors and creates color map.

*/

protected void analyzePixels() {

int len = pixels.length;

int nPix = len / 3;

indexedPixels = new byte[nPix];

NeuQuant nq = new NeuQuant(pixels, len, sample);

// initialize quantizer

colorTab = nq.process(); // create reduced palette

// convert map from BGR to RGB

for (int i = 0; i < colorTab.length; i += 3) {

byte temp = colorTab[i];

colorTab[i] = colorTab[i + 2];

colorTab[i + 2] = temp;

usedEntry[i / 3] = false;

}

// map image pixels to new palette

int k = 0;

for (int i = 0; i < nPix; i++) {

int index = nq.map(pixels[k++] & 0xff, pixels[k++] & 0xff, pixels[k++] & 0xff);

usedEntry[index] = true;

indexedPixels[i] = (byte) index;

}

pixels = null;

colorDepth = 8;

palSize = 7;

// get closest match to transparent color if specified

if (transparent != null) {

transIndex = findClosest(transparent);

}

}

/**

* Returns index of palette color closest to c

*

*/

protected int findClosest(Color c) {

if (colorTab == null)

return -1;

int r = c.getRed();

int g = c.getGreen();

int b = c.getBlue();

int minpos = 0;

int dmin = 256 * 256 * 256;

int len = colorTab.length;

for (int i = 0; i < len;) {

int dr = r - (colorTab[i++] & 0xff);

int dg = g - (colorTab[i++] & 0xff);

int db = b - (colorTab[i] & 0xff);

int d = dr * dr + dg * dg + db * db;

int index = i / 3;

if (usedEntry[index] && (d < dmin)) {

dmin = d;

minpos = index;

}

i++;

}

return minpos;

}

/**

* Extracts image pixels into byte array "pixels"

*/

protected void getImagePixels() {

int w = image.getWidth();

int h = image.getHeight();

int type = image.getType();

if ((w != width) || (h != height) || (type != BufferedImage.TYPE_3BYTE_BGR)) {

// create new image with right size/format

BufferedImage temp = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);

Graphics2D g = temp.createGraphics();

g.drawImage(image, 0, 0, null);

image = temp;

}

pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();

}

/**

* Writes Graphic Control Extension

*/

protected void writeGraphicCtrlExt() throws IOException {

out.write(0x21); // extension introducer

out.write(0xf9); // GCE label

out.write(4); // data block size

int transp, disp;

if (transparent == null) {

transp = 0;

disp = 0; // dispose = no action

} else {

transp = 1;

disp = 2; // force clear if using transparent color

}

if (dispose >= 0) {

disp = dispose & 7; // user override

}

disp <<= 2;

// packed fields

out.write(0 | // 1:3 reserved

disp | // 4:6 disposal

0 | // 7 user input - 0 = none

transp); // 8 transparency flag

writeShort(delay); // delay x 1/100 sec

out.write(transIndex); // transparent color index

out.write(0); // block terminator

}

/**

* Writes Image Descriptor

*/

protected void writeImageDesc() throws IOException {

out.write(0x2c); // image separator

writeShort(0); // image position x,y = 0,0

writeShort(0);

writeShort(width); // image size

writeShort(height);

// packed fields

if (firstFrame) {

// no LCT - GCT is used for first (or only) frame

out.write(0);

} else {

// specify normal LCT

out.write(0x80 | // 1 local color table 1=yes

0 | // 2 interlace - 0=no

0 | // 3 sorted - 0=no

0 | // 4-5 reserved

palSize); // 6-8 size of color table

}

}

/**

* Writes Logical Screen Descriptor

*/

protected void writeLSD() throws IOException {

// logical screen size

writeShort(width);

writeShort(height);

// packed fields

out.write((0x80 | // 1 : global color table flag = 1 (gct used)

0x70 | // 2-4 : color resolution = 7

0x00 | // 5 : gct sort flag = 0

palSize)); // 6-8 : gct size

out.write(0); // background color index

out.write(0); // pixel aspect ratio - assume 1:1

}

/**

* Writes Netscape application extension to define repeat count.

*/

protected void writeNetscapeExt() throws IOException {

out.write(0x21); // extension introducer

out.write(0xff); // app extension label

out.write(11); // block size

writeString("NETSCAPE" + "2.0"); // app id + auth code

out.write(3); // sub-block size

out.write(1); // loop sub-block id

writeShort(repeat); // loop count (extra iterations, 0=repeat forever)

out.write(0); // block terminator

}

/**

* Writes color table

*/

protected void writePalette() throws IOException {

out.write(colorTab, 0, colorTab.length);

int n = (3 * 256) - colorTab.length;

for (int i = 0; i < n; i++) {

out.write(0);

}

}

/**

* Encodes and writes pixel data

*/

protected void writePixels() throws IOException {

LZWEncoder encoder = new LZWEncoder(width, height, indexedPixels, colorDepth);

encoder.encode(out);

}

/**

* Write 16-bit value to output stream, LSB first

*/

protected void writeShort(int value) throws IOException {

out.write(value & 0xff);

out.write((value >> 8) & 0xff);

}

/**

* Writes string to output stream

*/

protected void writeString(String s) throws IOException {

for (int i = 0; i < s.length(); i++) {

out.write((byte) s.charAt(i));

}

}

}

/*

* NeuQuant Neural-Net Quantization Algorithm ------------------------------------------

*

* Copyright (c) 1994 Anthony Dekker

*

* NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See "Kohonen neural networks for optimal colour quantization" in

* "Network: Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of the algorithm.

*

* Any party obtaining a copy of these files from the author, directly or indirectly, is granted, free of charge, a full and unrestricted

* irrevocable, world-wide, paid up, royalty-free, nonexclusive right and license to deal in this software and documentation files (the

* "Software"), including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of

* the Software, and to permit persons who receive copies from any such party to do so, with the only requirement being that this copyright

* notice remain intact.

*/

// Ported to Java 12/00 K Weiner

class NeuQuant {

protected static final int netsize = 256; /* number of colours used */

/* four primes near 500 - assume no image has a length so large */

/* that it is divisible by all four primes */

protected static final int prime1 = 499;

protected static final int prime2 = 491;

protected static final int prime3 = 487;

protected static final int prime4 = 503;

protected static final int minpicturebytes = (3 * prime4);

/* minimum size for input image */

/*

* Program Skeleton ---------------- [select samplefac in range 1..30] [read image from input file] pic = (unsigned char*)

* malloc(3*width*height); initnet(pic,3*width*height,samplefac); learn(); unbiasnet(); [write output image header, using

* writecolourmap(f)] inxbuild(); write output image using inxsearch(b,g,r)

*/

/*

* Network Definitions -------------------

*/

protected static final int maxnetpos = (netsize - 1);

protected static final int netbiasshift = 4; /* bias for colour values */

protected static final int ncycles = 100; /* no. of learning cycles */

/* defs for freq and bias */

protected static final int intbiasshift = 16; /* bias for fractions */

protected static final int intbias = (((int) 1) << intbiasshift);

protected static final int gammashift = 10; /* gamma = 1024 */

protected static final int gamma = (((int) 1) << gammashift);

protected static final int betashift = 10;

protected static final int beta = (intbias >> betashift); /* beta = 1/1024 */

protected static final int betagamma = (intbias << (gammashift - betashift));

/* defs for decreasing radius factor */

protected static final int initrad = (netsize >> 3); /*

* for 256 cols, radius starts

*/

protected static final int radiusbiasshift = 6; /* at 32.0 biased by 6 bits */

protected static final int radiusbias = (((int) 1) << radiusbiasshift);

protected static final int initradius = (initrad * radiusbias); /*

* and decreases by a

*/

protected static final int radiusdec = 30; /* factor of 1/30 each cycle */

/* defs for decreasing alpha factor */

protected static final int alphabiasshift = 10; /* alpha starts at 1.0 */

protected static final int initalpha = (((int) 1) << alphabiasshift);

protected int alphadec; /* biased by 10 bits */

/* radbias and alpharadbias used for radpower calculation */

protected static final int radbiasshift = 8;

protected static final int radbias = (((int) 1) << radbiasshift);

protected static final int alpharadbshift = (alphabiasshift + radbiasshift);

protected static final int alpharadbias = (((int) 1) << alpharadbshift);

/*

* Types and Global Variables --------------------------

*/

protected byte[] thepicture; /* the input image itself */

protected int lengthcount; /* lengthcount = H*W*3 */

protected int samplefac; /* sampling factor 1..30 */

// typedef int pixel[4]; /* BGRc */

protected int[][] network; /* the network itself - [netsize][4] */

protected int[] netindex = new int[256];

/* for network lookup - really 256 */

protected int[] bias = new int[netsize];

/* bias and freq arrays for learning */

protected int[] freq = new int[netsize];

protected int[] radpower = new int[initrad];

/* radpower for precomputation */

/*

* Initialise network in range (0,0,0) to (255,255,255) and set parameters

* -----------------------------------------------------------------------

*/

public NeuQuant(byte[] thepic, int len, int sample) {

int i;

int[] p;

thepicture = thepic;

lengthcount = len;

samplefac = sample;

network = new int[netsize][];

for (i = 0; i < netsize; i++) {

network[i] = new int[4];

p = network[i];

p[0] = p[1] = p[2] = (i << (netbiasshift + 8)) / netsize;

freq[i] = intbias / netsize; /* 1/netsize */

bias[i] = 0;

}

}

public byte[] colorMap() {

byte[] map = new byte[3 * netsize];

int[] index = new int[netsize];

for (int i = 0; i < netsize; i++)

index[network[i][3]] = i;

int k = 0;

for (int i = 0; i < netsize; i++) {

int j = index[i];

map[k++] = (byte) (network[j][0]);

map[k++] = (byte) (network[j][1]);

map[k++] = (byte) (network[j][2]);

}

return map;

}

/*

* Insertion sort of network and building of netindex[0..255] (to do after unbias)

* -------------------------------------------------------------------------------

*/

public void inxbuild() {

int i, j, smallpos, smallval;

int[] p;

int[] q;

int previouscol, startpos;

previouscol = 0;

startpos = 0;

for (i = 0; i < netsize; i++) {

p = network[i];

smallpos = i;

smallval = p[1]; /* index on g */

/* find smallest in i..netsize-1 */

for (j = i + 1; j < netsize; j++) {

q = network[j];

if (q[1] < smallval) { /* index on g */

smallpos = j;

smallval = q[1]; /* index on g */

}

}

q = network[smallpos];

/* swap p (i) and q (smallpos) entries */

if (i != smallpos) {

j = q[0];

q[0] = p[0];

p[0] = j;

j = q[1];

q[1] = p[1];

p[1] = j;

j = q[2];

q[2] = p[2];

p[2] = j;

j = q[3];

q[3] = p[3];

p[3] = j;

}

/* smallval entry is now in position i */

if (smallval != previouscol) {

netindex[previouscol] = (startpos + i) >> 1;

for (j = previouscol + 1; j < smallval; j++)

netindex[j] = i;

previouscol = smallval;

startpos = i;

}

}

netindex[previouscol] = (startpos + maxnetpos) >> 1;

for (j = previouscol + 1; j < 256; j++)

netindex[j] = maxnetpos; /* really 256 */

}

/*

* Main Learning Loop ------------------

*/

public void learn() {

int i, j, b, g, r;

int radius, rad, alpha, step, delta, samplepixels;

byte[] p;

int pix, lim;

if (lengthcount < minpicturebytes)

samplefac = 1;

alphadec = 30 + ((samplefac - 1) / 3);

p = thepicture;

pix = 0;

lim = lengthcount;

samplepixels = lengthcount / (3 * samplefac);

delta = samplepixels / ncycles;

alpha = initalpha;

radius = initradius;

rad = radius >> radiusbiasshift;

if (rad <= 1)

rad = 0;

for (i = 0; i < rad; i++)

radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));

// fprintf(stderr,"beginning 1D learning: initial radius=%d\n", rad);

if (lengthcount < minpicturebytes)

step = 3;

else if ((lengthcount % prime1) != 0)

step = 3 * prime1;

else {

if ((lengthcount % prime2) != 0)

step = 3 * prime2;

else {

if ((lengthcount % prime3) != 0)

step = 3 * prime3;

else

step = 3 * prime4;

}

}

i = 0;

while (i < samplepixels) {

b = (p[pix + 0] & 0xff) << netbiasshift;

g = (p[pix + 1] & 0xff) << netbiasshift;

r = (p[pix + 2] & 0xff) << netbiasshift;

j = contest(b, g, r);

altersingle(alpha, j, b, g, r);

if (rad != 0)

alterneigh(rad, j, b, g, r); /* alter neighbours */

pix += step;

if (pix >= lim)

pix -= lengthcount;

i++;

if (delta == 0)

delta = 1;

if (i % delta == 0) {

alpha -= alpha / alphadec;

radius -= radius / radiusdec;

rad = radius >> radiusbiasshift;

if (rad <= 1)

rad = 0;

for (j = 0; j < rad; j++)

radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));

}

}

// fprintf(stderr,"finished 1D learning: final alpha=%f

// !\n",((float)alpha)/initalpha);

}

/*

* Search for BGR values 0..255 (after net is unbiased) and return colour index

* ----------------------------------------------------------------------------

*/

public int map(int b, int g, int r) {

int i, j, dist, a, bestd;

int[] p;

int best;

bestd = 1000; /* biggest possible dist is 256*3 */

best = -1;

i = netindex[g]; /* index on g */

j = i - 1; /* start at netindex[g] and work outwards */

while ((i < netsize) || (j >= 0)) {

if (i < netsize) {

p = network[i];

dist = p[1] - g; /* inx key */

if (dist >= bestd)

i = netsize; /* stop iter */

else {

i++;

if (dist < 0)

dist = -dist;

a = p[0] - b;

if (a < 0)

a = -a;

dist += a;

if (dist < bestd) {

a = p[2] - r;

if (a < 0)

a = -a;

dist += a;

if (dist < bestd) {

bestd = dist;

best = p[3];

}

}

}

}

if (j >= 0) {

p = network[j];

dist = g - p[1]; /* inx key - reverse dif */

if (dist >= bestd)

j = -1; /* stop iter */

else {

j--;

if (dist < 0)

dist = -dist;

a = p[0] - b;

if (a < 0)

a = -a;

dist += a;

if (dist < bestd) {

a = p[2] - r;

if (a < 0)

a = -a;

dist += a;

if (dist < bestd) {

bestd = dist;

best = p[3];

}

}

}

}

}

return (best);

}

public byte[] process() {

learn();

unbiasnet();

inxbuild();

return colorMap();

}

/*

* Unbias network to give byte values 0..255 and record position i to prepare for sort

* -----------------------------------------------------------------------------------

*/

public void unbiasnet() {

int i;

for (i = 0; i < netsize; i++) {

network[i][0] >>= netbiasshift;

network[i][1] >>= netbiasshift;

network[i][2] >>= netbiasshift;

network[i][3] = i; /* record colour no */

}

}

/*

* Move adjacent neurons by precomputed alpha*(1-((i-j)^2/[r]^2)) in radpower[|i-j|]

* ---------------------------------------------------------------------------------

*/

protected void alterneigh(int rad, int i, int b, int g, int r) {

int j, k, lo, hi, a, m;

int[] p;

lo = i - rad;

if (lo < -1)

lo = -1;

hi = i + rad;

if (hi > netsize)

hi = netsize;

j = i + 1;

k = i - 1;

m = 1;

while ((j < hi) || (k > lo)) {

a = radpower[m++];

if (j < hi) {

p = network[j++];

try {

p[0] -= (a * (p[0] - b)) / alpharadbias;

p[1] -= (a * (p[1] - g)) / alpharadbias;

p[2] -= (a * (p[2] - r)) / alpharadbias;

} catch (Exception e) {

} // prevents 1.3 miscompilation

}

if (k > lo) {

p = network[k--];

try {

p[0] -= (a * (p[0] - b)) / alpharadbias;

p[1] -= (a * (p[1] - g)) / alpharadbias;

p[2] -= (a * (p[2] - r)) / alpharadbias;

} catch (Exception e) {

}

}

}

}

/*

* Move neuron i towards biased (b,g,r) by factor alpha ----------------------------------------------------

*/

protected void altersingle(int alpha, int i, int b, int g, int r) {

/* alter hit neuron */

int[] n = network[i];

n[0] -= (alpha * (n[0] - b)) / initalpha;

n[1] -= (alpha * (n[1] - g)) / initalpha;

n[2] -= (alpha * (n[2] - r)) / initalpha;

}

/*

* Search for biased BGR values ----------------------------

*/

protected int contest(int b, int g, int r) {

/* finds closest neuron (min dist) and updates freq */

/* finds best neuron (min dist-bias) and returns position */

/* for frequently chosen neurons, freq[i] is high and bias[i] is negative */

/* bias[i] = gamma*((1/netsize)-freq[i]) */

int i, dist, a, biasdist, betafreq;

int bestpos, bestbiaspos, bestd, bestbiasd;

int[] n;

bestd = ~(((int) 1) << 31);

bestbiasd = bestd;

bestpos = -1;

bestbiaspos = bestpos;

for (i = 0; i < netsize; i++) {

n = network[i];

dist = n[0] - b;

if (dist < 0)

dist = -dist;

a = n[1] - g;

if (a < 0)

a = -a;

dist += a;

a = n[2] - r;

if (a < 0)

a = -a;

dist += a;

if (dist < bestd) {

bestd = dist;

bestpos = i;

}

biasdist = dist - ((bias[i]) >> (intbiasshift - netbiasshift));

if (biasdist < bestbiasd) {

bestbiasd = biasdist;

bestbiaspos = i;

}

betafreq = (freq[i] >> betashift);

freq[i] -= betafreq;

bias[i] += (betafreq << gammashift);

}

freq[bestpos] += beta;

bias[bestpos] -= betagamma;

return (bestbiaspos);

}

}

// ==============================================================================

// Adapted from Jef Poskanzer's Java port by way of J. M. G. Elliott.

// K Weiner 12/00

class LZWEncoder {

private static final int EOF = -1;

private int imgW, imgH;

private byte[] pixAry;

private int initCodeSize;

private int remaining;

private int curPixel;

// GIFCOMPR.C - GIF Image compression routines

//

// Lempel-Ziv compression based on 'compress'. GIF modifications by

// David Rowley (mgardi@watdcsu.waterloo.edu)

// General DEFINEs

static final int BITS = 12;

static final int HSIZE = 5003; // 80% occupancy

// GIF Image compression - modified 'compress'

//

// Based on: compress.c - File compression ala IEEE Computer, June 1984.

//

// By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)

// Jim McKie (decvax!mcvax!jim)

// Steve Davies (decvax!vax135!petsd!peora!srd)

// Ken Turkowski (decvax!decwrl!turtlevax!ken)

// James A. Woods (decvax!ihnp4!ames!jaw)

// Joe Orost (decvax!vax135!petsd!joe)

int n_bits; // number of bits/code

int maxbits = BITS; // user settable max # bits/code

int maxcode; // maximum code, given n_bits

int maxmaxcode = 1 << BITS; // should NEVER generate this code

int[] htab = new int[HSIZE];

int[] codetab = new int[HSIZE];

int hsize = HSIZE; // for dynamic table sizing

int free_ent = 0; // first unused entry

// block compression parameters -- after all codes are used up,

// and compression rate changes, start over.

boolean clear_flg = false;

// Algorithm: use open addressing double hashing (no chaining) on the

// prefix code / next character combination. We do a variant of Knuth's

// algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime

// secondary probe. Here, the modular division first probe is gives way

// to a faster exclusive-or manipulation. Also do block compression with

// an adaptive reset, whereby the code table is cleared when the compression

// ratio decreases, but after the table fills. The variable-length output

// codes are re-sized at this point, and a special CLEAR code is generated

// for the decompressor. Late addition: construct the table according to

// file size for noticeable speed improvement on small files. Please direct

// questions about this implementation to ames!jaw.

int g_init_bits;

int ClearCode;

int EOFCode;

// output

//

// Output the given code.

// Inputs:

// code: A n_bits-bit integer. If == -1, then EOF. This assumes

// that n_bits =< wordsize - 1.

// Outputs:

// Outputs code to the file.

// Assumptions:

// Chars are 8 bits long.

// Algorithm:

// Maintain a BITS character long buffer (so that 8 codes will

// fit in it exactly). Use the VAX insv instruction to insert each

// code in turn. When the buffer fills up empty it and start over.

int cur_accum = 0;

int cur_bits = 0;

int masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF,

0x7FFF, 0xFFFF };

// Number of characters so far in this 'packet'

int a_count;

// Define the storage for the packet accumulator

byte[] accum = new byte[256];

// ----------------------------------------------------------------------------

LZWEncoder(int width, int height, byte[] pixels, int color_depth) {

imgW = width;

imgH = height;

pixAry = pixels;

initCodeSize = Math.max(2, color_depth);

}

// Add a character to the end of the current packet, and if it is 254

// characters, flush the packet to disk.

void char_out(byte c, OutputStream outs) throws IOException {

accum[a_count++] = c;

if (a_count >= 254)

flush_char(outs);

}

// Clear out the hash table

// table clear for block compress

void cl_block(OutputStream outs) throws IOException {

cl_hash(hsize);

free_ent = ClearCode + 2;

clear_flg = true;

output(ClearCode, outs);

}

// reset code table

void cl_hash(int hsize) {

for (int i = 0; i < hsize; ++i)

htab[i] = -1;

}

void compress(int init_bits, OutputStream outs) throws IOException {

int fcode;

int i /* = 0 */;

int c;

int ent;

int disp;

int hsize_reg;

int hshift;

// Set up the globals: g_init_bits - initial number of bits

g_init_bits = init_bits;

// Set up the necessary values

clear_flg = false;

n_bits = g_init_bits;

maxcode = MAXCODE(n_bits);

ClearCode = 1 << (init_bits - 1);

EOFCode = ClearCode + 1;

free_ent = ClearCode + 2;

a_count = 0; // clear packet

ent = nextPixel();

hshift = 0;

for (fcode = hsize; fcode < 65536; fcode *= 2)

++hshift;

hshift = 8 - hshift; // set hash code range bound

hsize_reg = hsize;

cl_hash(hsize_reg); // clear hash table

output(ClearCode, outs);

outer_loop: while ((c = nextPixel()) != EOF) {

fcode = (c << maxbits) + ent;

i = (c << hshift) ^ ent; // xor hashing

if (htab[i] == fcode) {

ent = codetab[i];

continue;

} else if (htab[i] >= 0) // non-empty slot

{

disp = hsize_reg - i; // secondary hash (after G. Knott)

if (i == 0)

disp = 1;

do {

if ((i -= disp) < 0)

i += hsize_reg;

if (htab[i] == fcode) {

ent = codetab[i];

continue outer_loop;

}

} while (htab[i] >= 0);

}

output(ent, outs);

ent = c;

if (free_ent < maxmaxcode) {

codetab[i] = free_ent++; // code -> hashtable

htab[i] = fcode;

} else

cl_block(outs);

}

// Put out the final code.

output(ent, outs);

output(EOFCode, outs);

}

// ----------------------------------------------------------------------------

void encode(OutputStream os) throws IOException {

os.write(initCodeSize); // write "initial code size" byte

remaining = imgW * imgH; // reset navigation variables

curPixel = 0;

compress(initCodeSize + 1, os); // compress and write the pixel data

os.write(0); // write block terminator

}

// Flush the packet to disk, and reset the accumulator

void flush_char(OutputStream outs) throws IOException {

if (a_count > 0) {

outs.write(a_count);

outs.write(accum, 0, a_count);

a_count = 0;

}

}

final int MAXCODE(int n_bits) {

return (1 << n_bits) - 1;

}

// ----------------------------------------------------------------------------

// Return the next pixel from the image

// ----------------------------------------------------------------------------

private int nextPixel() {

if (remaining == 0)

return EOF;

--remaining;

byte pix = pixAry[curPixel++];

return pix & 0xff;

}

void output(int code, OutputStream outs) throws IOException {

cur_accum &= masks[cur_bits];

if (cur_bits > 0)

cur_accum |= (code << cur_bits);

else

cur_accum = code;

cur_bits += n_bits;

while (cur_bits >= 8) {

char_out((byte) (cur_accum & 0xff), outs);

cur_accum >>= 8;

cur_bits -= 8;

}

// If the next entry is going to be too big for the code size,

// then increase it, if possible.

if (free_ent > maxcode || clear_flg) {

if (clear_flg) {

maxcode = MAXCODE(n_bits = g_init_bits);

clear_flg = false;

} else {

++n_bits;

if (n_bits == maxbits)

maxcode = maxmaxcode;

else

maxcode = MAXCODE(n_bits);

}

}

if (code == EOFCode) {

// At EOF, write the rest of the buffer.

while (cur_bits > 0) {

char_out((byte) (cur_accum & 0xff), outs);

cur_accum >>= 8;

cur_bits -= 8;

}

flush_char(outs);

}

}

}

總結

以上是生活随笔為你收集整理的java gif_使用Java来处理GIF图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

麻豆精品国产精华精华液好用吗 | 亚洲人成网站免费播放 | 国产偷国产偷精品高清尤物 | 窝窝午夜理论片影院 | 欧美人与禽zoz0性伦交 | 午夜无码人妻av大片色欲 | 18精品久久久无码午夜福利 | 中文字幕无码人妻少妇免费 | 国产亚洲欧美日韩亚洲中文色 | 亚洲国产高清在线观看视频 | av香港经典三级级 在线 | 国产乱人伦av在线无码 | 人妻夜夜爽天天爽三区 | 曰韩少妇内射免费播放 | 久久国产劲爆∧v内射 | 亚洲精品www久久久 | 少妇人妻偷人精品无码视频 | 无遮无挡爽爽免费视频 | 欧美成人午夜精品久久久 | 精品成人av一区二区三区 | 日韩人妻系列无码专区 | 在线观看国产一区二区三区 | 四虎影视成人永久免费观看视频 | 国产乱人伦av在线无码 | 亚洲爆乳精品无码一区二区三区 | 天天摸天天碰天天添 | 日韩精品a片一区二区三区妖精 | 一区二区三区高清视频一 | 熟女少妇人妻中文字幕 | 久久午夜无码鲁丝片 | 久久久久99精品成人片 | 亚洲 日韩 欧美 成人 在线观看 | 在线观看国产一区二区三区 | 久久综合九色综合欧美狠狠 | 男女爱爱好爽视频免费看 | 无码吃奶揉捏奶头高潮视频 | 无码精品国产va在线观看dvd | 伊人色综合久久天天小片 | 亚洲成av人在线观看网址 | 久久国产36精品色熟妇 | 精品少妇爆乳无码av无码专区 | 内射后入在线观看一区 | 亲嘴扒胸摸屁股激烈网站 | 精品少妇爆乳无码av无码专区 | 亚洲啪av永久无码精品放毛片 | 日本饥渴人妻欲求不满 | 乱中年女人伦av三区 | 粗大的内捧猛烈进出视频 | 国产精品无码永久免费888 | 久久99精品久久久久久 | 亚洲日韩av一区二区三区中文 | 国模大胆一区二区三区 | 国产精品无码一区二区三区不卡 | 午夜无码人妻av大片色欲 | 午夜熟女插插xx免费视频 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲色欲色欲欲www在线 | 精品久久综合1区2区3区激情 | 丰满少妇女裸体bbw | 精品久久久中文字幕人妻 | 国语精品一区二区三区 | 精品一区二区三区波多野结衣 | 久久亚洲国产成人精品性色 | а√天堂www在线天堂小说 | 无码人妻少妇伦在线电影 | 亚洲一区二区三区偷拍女厕 | 中文字幕乱码中文乱码51精品 | 亚拍精品一区二区三区探花 | √8天堂资源地址中文在线 | 日日夜夜撸啊撸 | 欧美日韩一区二区免费视频 | 国产无套粉嫩白浆在线 | 久久久久久久人妻无码中文字幕爆 | 熟妇女人妻丰满少妇中文字幕 | 无码精品国产va在线观看dvd | 国产一精品一av一免费 | 强开小婷嫩苞又嫩又紧视频 | 蜜桃视频韩日免费播放 | 亚洲gv猛男gv无码男同 | 亚洲成av人片在线观看无码不卡 | 国产亚洲精品久久久久久久 | 亚洲a无码综合a国产av中文 | 夜精品a片一区二区三区无码白浆 | 亚洲成av人综合在线观看 | 国产精品亚洲五月天高清 | 国产精品自产拍在线观看 | 99久久精品无码一区二区毛片 | 日韩欧美中文字幕在线三区 | 久久www免费人成人片 | 精品欧洲av无码一区二区三区 | 国产成人综合美国十次 | 色综合久久中文娱乐网 | 欧美日韩色另类综合 | 亚洲精品久久久久久久久久久 | 国产精品18久久久久久麻辣 | 一二三四在线观看免费视频 | 国产黄在线观看免费观看不卡 | 精品久久久久久亚洲精品 | 国产精品久久久久无码av色戒 | 丰满人妻一区二区三区免费视频 | 国产精品沙发午睡系列 | 久久久久免费看成人影片 | 一本久道久久综合婷婷五月 | 亚洲高清偷拍一区二区三区 | 日韩av无码一区二区三区 | 国产亚洲精品久久久ai换 | 国产精品第一国产精品 | 性做久久久久久久久 | 精品乱子伦一区二区三区 | 97人妻精品一区二区三区 | 欧美日韩人成综合在线播放 | 国产乱人伦av在线无码 | 日日夜夜撸啊撸 | 免费人成在线观看网站 | 日韩精品a片一区二区三区妖精 | 六月丁香婷婷色狠狠久久 | 日韩欧美群交p片內射中文 | 久久精品国产大片免费观看 | 伦伦影院午夜理论片 | 综合激情五月综合激情五月激情1 | 欧美真人作爱免费视频 | 久久久精品456亚洲影院 | 性欧美疯狂xxxxbbbb | 精品国精品国产自在久国产87 | 国产精品自产拍在线观看 | 一区二区传媒有限公司 | 人人爽人人爽人人片av亚洲 | 欧美喷潮久久久xxxxx | 色欲av亚洲一区无码少妇 | 自拍偷自拍亚洲精品被多人伦好爽 | 精品亚洲成av人在线观看 | 又粗又大又硬又长又爽 | 久久久久久久久蜜桃 | 精品成在人线av无码免费看 | 国产熟妇高潮叫床视频播放 | 在线观看欧美一区二区三区 | 1000部啪啪未满十八勿入下载 | 久久亚洲中文字幕精品一区 | 日本乱偷人妻中文字幕 | а天堂中文在线官网 | 欧美兽交xxxx×视频 | 亚洲国产精品无码一区二区三区 | 国产精品亚洲综合色区韩国 | 扒开双腿吃奶呻吟做受视频 | 久久亚洲精品成人无码 | 欧美自拍另类欧美综合图片区 | 99视频精品全部免费免费观看 | 日本一本二本三区免费 | 久久精品视频在线看15 | 精品一区二区不卡无码av | 美女黄网站人色视频免费国产 | 久久精品人妻少妇一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 国产激情综合五月久久 | 亚洲熟悉妇女xxx妇女av | 99久久精品日本一区二区免费 | 精品aⅴ一区二区三区 | 国产精品久久国产精品99 | 久久99精品久久久久久动态图 | 国产av无码专区亚洲awww | 精品国产一区二区三区四区在线看 | 国产精品无码永久免费888 | 76少妇精品导航 | 国产舌乚八伦偷品w中 | 亚洲春色在线视频 | 老熟女重囗味hdxx69 | 亚洲成av人片在线观看无码不卡 | 久久久久se色偷偷亚洲精品av | 国产精品a成v人在线播放 | 丰腴饱满的极品熟妇 | 久久久久久久人妻无码中文字幕爆 | 成人动漫在线观看 | 玩弄少妇高潮ⅹxxxyw | 亚洲国产欧美日韩精品一区二区三区 | 思思久久99热只有频精品66 | 久久久久久a亚洲欧洲av冫 | 99久久精品日本一区二区免费 | 性做久久久久久久久 | 国产三级久久久精品麻豆三级 | 国产精品怡红院永久免费 | 免费无码一区二区三区蜜桃大 | 色欲人妻aaaaaaa无码 | 亚洲人成影院在线无码按摩店 | 毛片内射-百度 | 日本熟妇人妻xxxxx人hd | 日本护士毛茸茸高潮 | 在线播放无码字幕亚洲 | 久久www免费人成人片 | 欧美日韩亚洲国产精品 | 蜜桃臀无码内射一区二区三区 | 国产日产欧产精品精品app | 精品久久久无码中文字幕 | 亚洲国产av精品一区二区蜜芽 | 国产性生交xxxxx无码 | 国产精品人人爽人人做我的可爱 | 永久免费精品精品永久-夜色 | 日本肉体xxxx裸交 | 亚洲熟妇色xxxxx欧美老妇y | 国产人妻大战黑人第1集 | 午夜丰满少妇性开放视频 | 亚洲精品一区二区三区在线观看 | 国产精品亚洲а∨无码播放麻豆 | 日日摸夜夜摸狠狠摸婷婷 | 久久久av男人的天堂 | 乱人伦人妻中文字幕无码 | 丰满人妻被黑人猛烈进入 | 中文字幕无码人妻少妇免费 | аⅴ资源天堂资源库在线 | 99精品视频在线观看免费 | 国产精品无码一区二区桃花视频 | 欧美日韩久久久精品a片 | 免费无码午夜福利片69 | 亚洲国产日韩a在线播放 | 色欲av亚洲一区无码少妇 | 红桃av一区二区三区在线无码av | 亚洲精品一区三区三区在线观看 | 久久久久久久人妻无码中文字幕爆 | 精品成人av一区二区三区 | 国产精品亚洲专区无码不卡 | 国产成人人人97超碰超爽8 | 亚洲欧美综合区丁香五月小说 | 成人亚洲精品久久久久 | 噜噜噜亚洲色成人网站 | 亚洲欧美色中文字幕在线 | 久久精品丝袜高跟鞋 | 九九久久精品国产免费看小说 | 亚洲а∨天堂久久精品2021 | 国产精品18久久久久久麻辣 | 国产乱人伦偷精品视频 | 国产精品永久免费视频 | 中文毛片无遮挡高清免费 | 亚洲中文字幕无码中文字在线 | 99精品国产综合久久久久五月天 | 蜜臀av无码人妻精品 | 少妇无码av无码专区在线观看 | 国内精品人妻无码久久久影院 | 精品国精品国产自在久国产87 | 爽爽影院免费观看 | 国产网红无码精品视频 | 国产精品亚洲а∨无码播放麻豆 | 国产亚洲欧美在线专区 | 成人无码视频在线观看网站 | 免费国产黄网站在线观看 | 18禁黄网站男男禁片免费观看 | 久久国内精品自在自线 | 乱人伦人妻中文字幕无码久久网 | 久久久精品456亚洲影院 | 国产亚洲美女精品久久久2020 | 欧洲精品码一区二区三区免费看 | 国产精品欧美成人 | 中文字幕人妻无码一区二区三区 | 亚洲精品久久久久avwww潮水 | 成年美女黄网站色大免费全看 | 欧美日韩视频无码一区二区三 | 综合激情五月综合激情五月激情1 | 爽爽影院免费观看 | 久久成人a毛片免费观看网站 | 熟女少妇在线视频播放 | 国产成人精品久久亚洲高清不卡 | 欧美日本精品一区二区三区 | 亚洲va中文字幕无码久久不卡 | 人妻人人添人妻人人爱 | 国产偷抇久久精品a片69 | 最近中文2019字幕第二页 | 7777奇米四色成人眼影 | 欧美日本精品一区二区三区 | 麻豆成人精品国产免费 | 无人区乱码一区二区三区 | 乱人伦人妻中文字幕无码久久网 | 国产在线aaa片一区二区99 | 综合人妻久久一区二区精品 | 国产精品美女久久久久av爽李琼 | 1000部啪啪未满十八勿入下载 | 久久久久se色偷偷亚洲精品av | 露脸叫床粗话东北少妇 | 亚洲精品国产精品乱码视色 | 国产精品鲁鲁鲁 | 国产精品va在线播放 | 高中生自慰www网站 | 国产午夜亚洲精品不卡 | 高潮毛片无遮挡高清免费视频 | 亚欧洲精品在线视频免费观看 | 日韩在线不卡免费视频一区 | 精品无码一区二区三区的天堂 | 国产精品国产自线拍免费软件 | 国产亚洲视频中文字幕97精品 | 精品人妻人人做人人爽夜夜爽 | 少妇人妻偷人精品无码视频 | 99久久婷婷国产综合精品青草免费 | 久久综合激激的五月天 | 中文字幕乱码人妻无码久久 | 色综合久久久无码中文字幕 | 欧美喷潮久久久xxxxx | 国产午夜精品一区二区三区嫩草 | 日韩成人一区二区三区在线观看 | 秋霞特色aa大片 | 精品亚洲韩国一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 日韩精品成人一区二区三区 | 精品久久综合1区2区3区激情 | 麻豆精品国产精华精华液好用吗 | 无码人妻丰满熟妇区五十路百度 | 樱花草在线社区www | 日本成熟视频免费视频 | 色情久久久av熟女人妻网站 | 激情国产av做激情国产爱 | 日韩精品无码一本二本三本色 | 婷婷五月综合缴情在线视频 | 鲁鲁鲁爽爽爽在线视频观看 | 搡女人真爽免费视频大全 | 无码国模国产在线观看 | 中文字幕精品av一区二区五区 | 亚洲色在线无码国产精品不卡 | 国产人妻人伦精品 | 熟妇人妻激情偷爽文 | 无码成人精品区在线观看 | 性色欲网站人妻丰满中文久久不卡 | 国产欧美熟妇另类久久久 | 日韩精品一区二区av在线 | 午夜性刺激在线视频免费 | 久久亚洲精品中文字幕无男同 | 精品aⅴ一区二区三区 | 特大黑人娇小亚洲女 | 久久久中文久久久无码 | 乌克兰少妇xxxx做受 | 性生交片免费无码看人 | 久久 国产 尿 小便 嘘嘘 | 性欧美牲交xxxxx视频 | 国产麻豆精品一区二区三区v视界 | 久久人人97超碰a片精品 | 人妻aⅴ无码一区二区三区 | 丰满人妻被黑人猛烈进入 | 国产在线精品一区二区三区直播 | 欧美国产亚洲日韩在线二区 | 久久成人a毛片免费观看网站 | 中文字幕 人妻熟女 | 人妻与老人中文字幕 | 人人妻人人澡人人爽欧美一区 | 色偷偷人人澡人人爽人人模 | 麻豆果冻传媒2021精品传媒一区下载 | 久久亚洲精品中文字幕无男同 | 久久99精品国产.久久久久 | 精品亚洲韩国一区二区三区 | 精品久久久无码中文字幕 | 国内综合精品午夜久久资源 | 久久久久成人片免费观看蜜芽 | 精品久久8x国产免费观看 | 亚洲一区二区三区在线观看网站 | 少妇性l交大片欧洲热妇乱xxx | 黑人巨大精品欧美一区二区 | 成人免费视频一区二区 | 色综合久久久久综合一本到桃花网 | 无码国内精品人妻少妇 | 久久久久免费看成人影片 | 国产suv精品一区二区五 | 97人妻精品一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 中文字幕人成乱码熟女app | 动漫av一区二区在线观看 | 55夜色66夜色国产精品视频 | 乌克兰少妇xxxx做受 | 中文字幕日韩精品一区二区三区 | 亚洲熟妇自偷自拍另类 | 国产精品免费大片 | 欧美成人高清在线播放 | 成人欧美一区二区三区 | 国产精品无码一区二区桃花视频 | 国产成人无码午夜视频在线观看 | 蜜桃无码一区二区三区 | 免费国产成人高清在线观看网站 | 国产高潮视频在线观看 | av小次郎收藏 | 亚洲人成人无码网www国产 | 男人的天堂2018无码 | 国产香蕉尹人综合在线观看 | 少妇被粗大的猛进出69影院 | 小sao货水好多真紧h无码视频 | 亚洲无人区午夜福利码高清完整版 | 97精品国产97久久久久久免费 | 亚洲国产综合无码一区 | a片免费视频在线观看 | 亚洲成a人片在线观看无码 | 国产亚洲精品久久久久久久久动漫 | 欧美亚洲日韩国产人成在线播放 | 亚洲一区二区三区国产精华液 | av在线亚洲欧洲日产一区二区 | 色综合久久久久综合一本到桃花网 | 国产午夜亚洲精品不卡下载 | 久久久无码中文字幕久... | 红桃av一区二区三区在线无码av | 亚洲精品一区二区三区在线观看 | 国产成人无码av片在线观看不卡 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久久综合给合久久狠狠狠97色 | 久久久久成人片免费观看蜜芽 | 亚洲精品一区三区三区在线观看 | 奇米影视7777久久精品 | 亚洲男女内射在线播放 | 理论片87福利理论电影 | 激情内射日本一区二区三区 | 免费人成在线视频无码 | 日韩人妻少妇一区二区三区 | 动漫av网站免费观看 | 成 人 网 站国产免费观看 | 亚洲成在人网站无码天堂 | 樱花草在线社区www | 免费网站看v片在线18禁无码 | 欧美人与善在线com | 国产亚洲人成a在线v网站 | 成人无码精品1区2区3区免费看 | 扒开双腿疯狂进出爽爽爽视频 | 无码福利日韩神码福利片 | 欧美性生交活xxxxxdddd | 大屁股大乳丰满人妻 | 乱人伦人妻中文字幕无码久久网 | 无码精品人妻一区二区三区av | 永久免费精品精品永久-夜色 | 狂野欧美性猛交免费视频 | 久久亚洲精品中文字幕无男同 | 性欧美疯狂xxxxbbbb | 日韩欧美中文字幕在线三区 | 亚洲aⅴ无码成人网站国产app | 天海翼激烈高潮到腰振不止 | 久精品国产欧美亚洲色aⅴ大片 | 欧美黑人巨大xxxxx | 欧美性色19p | 欧洲熟妇色 欧美 | 欧美日本日韩 | 国产卡一卡二卡三 | 成人欧美一区二区三区黑人免费 | 日欧一片内射va在线影院 | 俺去俺来也www色官网 | 国产精品久久久久久无码 | 97色伦图片97综合影院 | 午夜精品久久久久久久久 | 精品一区二区三区无码免费视频 | 国产激情综合五月久久 | 亚洲の无码国产の无码步美 | 精品偷自拍另类在线观看 | 国产精品无码永久免费888 | 精品国产一区二区三区四区在线看 | 日日躁夜夜躁狠狠躁 | 中文字幕亚洲情99在线 | 久久久精品欧美一区二区免费 | 国产乱人无码伦av在线a | 内射巨臀欧美在线视频 | 在线a亚洲视频播放在线观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 麻豆果冻传媒2021精品传媒一区下载 | 丁香啪啪综合成人亚洲 | 九九久久精品国产免费看小说 | yw尤物av无码国产在线观看 | 天堂一区人妻无码 | 国产手机在线αⅴ片无码观看 | 国产精品久久久久久久9999 | 久久综合九色综合欧美狠狠 | 欧美三级不卡在线观看 | 国产精品爱久久久久久久 | 国产精品igao视频网 | 亚洲日本va中文字幕 | 国产午夜无码视频在线观看 | 久青草影院在线观看国产 | 蜜桃av抽搐高潮一区二区 | 国产精品久久久久9999小说 | 国产三级精品三级男人的天堂 | 无码一区二区三区在线 | 荫蒂被男人添的好舒服爽免费视频 | 成 人 免费观看网站 | 午夜精品久久久久久久久 | 国产精品亚洲五月天高清 | 免费无码午夜福利片69 | 人人妻人人澡人人爽精品欧美 | 精品偷拍一区二区三区在线看 | 极品嫩模高潮叫床 | 精品日本一区二区三区在线观看 | 亚洲乱亚洲乱妇50p | 亚洲狠狠婷婷综合久久 | 色综合视频一区二区三区 | 东京无码熟妇人妻av在线网址 | 三上悠亚人妻中文字幕在线 | 成人女人看片免费视频放人 | 理论片87福利理论电影 | 女人被男人爽到呻吟的视频 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品无套呻吟在线 | 亚洲欧美国产精品专区久久 | 中文字幕av无码一区二区三区电影 | 国产精品亚洲专区无码不卡 | 高清无码午夜福利视频 | 人妻aⅴ无码一区二区三区 | 亚洲精品综合一区二区三区在线 | 国语自产偷拍精品视频偷 | 天海翼激烈高潮到腰振不止 | 国产精品18久久久久久麻辣 | 欧美丰满熟妇xxxx性ppx人交 | 天堂а√在线中文在线 | 精品熟女少妇av免费观看 | 人人爽人人爽人人片av亚洲 | 亚拍精品一区二区三区探花 | 4hu四虎永久在线观看 | 漂亮人妻洗澡被公强 日日躁 | 亚洲一区二区三区无码久久 | 乱人伦人妻中文字幕无码 | 国产电影无码午夜在线播放 | 丰满护士巨好爽好大乳 | 亚洲成av人综合在线观看 | 国产av一区二区精品久久凹凸 | 亚洲 欧美 激情 小说 另类 | 伊人久久大香线蕉亚洲 | 少妇厨房愉情理9仑片视频 | 欧洲欧美人成视频在线 | 国产午夜视频在线观看 | 亚洲综合伊人久久大杳蕉 | 色综合久久88色综合天天 | 亚洲精品一区三区三区在线观看 | 日韩人妻少妇一区二区三区 | 亚洲国产日韩a在线播放 | 中国女人内谢69xxxxxa片 | 亚洲阿v天堂在线 | 久久这里只有精品视频9 | 丰满人妻一区二区三区免费视频 | 超碰97人人做人人爱少妇 | 特黄特色大片免费播放器图片 | 日韩精品久久久肉伦网站 | 欧美喷潮久久久xxxxx | 日本乱偷人妻中文字幕 | 国产亚洲精品久久久久久久 | 天天爽夜夜爽夜夜爽 | 亚洲色www成人永久网址 | 日本肉体xxxx裸交 | 国产乱人伦偷精品视频 | 亚洲乱码日产精品bd | 男女猛烈xx00免费视频试看 | 性生交大片免费看l | 国产人成高清在线视频99最全资源 | 日本大乳高潮视频在线观看 | 亚洲中文字幕无码一久久区 | 中文字幕无码日韩专区 | 中文字幕无码人妻少妇免费 | 欧美激情综合亚洲一二区 | 国产一区二区三区日韩精品 | 国产亚洲美女精品久久久2020 | 亚洲成av人片在线观看无码不卡 | 亚洲精品国偷拍自产在线麻豆 | 国产精品无套呻吟在线 | 久久综合狠狠综合久久综合88 | 久久久国产精品无码免费专区 | 国产精品亚洲一区二区三区喷水 | 欧美亚洲日韩国产人成在线播放 | 欧美人妻一区二区三区 | 亚洲一区av无码专区在线观看 | 国产麻豆精品精东影业av网站 | 亚洲日本va中文字幕 | 无码午夜成人1000部免费视频 | 夜精品a片一区二区三区无码白浆 | 久久国产精品二国产精品 | 中文字幕av日韩精品一区二区 | 中文字幕无码热在线视频 | 国内揄拍国内精品少妇国语 | 久久亚洲中文字幕无码 | 免费播放一区二区三区 | 日日干夜夜干 | 久久久久亚洲精品男人的天堂 | 免费人成网站视频在线观看 | 人人妻人人澡人人爽欧美一区 | 97久久超碰中文字幕 | 97久久国产亚洲精品超碰热 | 内射后入在线观看一区 | 日日摸日日碰夜夜爽av | 久激情内射婷内射蜜桃人妖 | 图片小说视频一区二区 | 国产av一区二区精品久久凹凸 | 无码国产激情在线观看 | 色噜噜亚洲男人的天堂 | 亚洲人成影院在线观看 | 国精品人妻无码一区二区三区蜜柚 | 成 人 网 站国产免费观看 | 亚洲 高清 成人 动漫 | 99久久久国产精品无码免费 | 国产免费久久久久久无码 | 日本va欧美va欧美va精品 | 日韩亚洲欧美精品综合 | 国产亚洲精品久久久久久大师 | 午夜精品久久久内射近拍高清 | 欧美亚洲国产一区二区三区 | 美女毛片一区二区三区四区 | 黑人巨大精品欧美黑寡妇 | 国产高潮视频在线观看 | 久在线观看福利视频 | 国产一区二区不卡老阿姨 | 欧美日本精品一区二区三区 | 无码乱肉视频免费大全合集 | 精品国产aⅴ无码一区二区 | 日本大香伊一区二区三区 | 男女下面进入的视频免费午夜 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 人人澡人摸人人添 | 色噜噜亚洲男人的天堂 | 成人免费视频视频在线观看 免费 | √天堂中文官网8在线 | 日韩视频 中文字幕 视频一区 | 无码纯肉视频在线观看 | 国产成人无码a区在线观看视频app | 人妻天天爽夜夜爽一区二区 | 日韩在线不卡免费视频一区 | 欧美性猛交内射兽交老熟妇 | 欧美成人午夜精品久久久 | 国产性生大片免费观看性 | 亚洲欧洲无卡二区视頻 | 久久国内精品自在自线 | 国产成人无码一二三区视频 | 在线a亚洲视频播放在线观看 | 亚洲日本一区二区三区在线 | 波多野结衣av在线观看 | 欧美三级a做爰在线观看 | 国产成人精品优优av | 亚洲国产精品久久久久久 | 亚洲精品综合一区二区三区在线 | 老熟妇乱子伦牲交视频 | 最新版天堂资源中文官网 | 精品国产乱码久久久久乱码 | 亚洲成a人片在线观看无码 | 久久精品无码一区二区三区 | 大肉大捧一进一出好爽视频 | 亚洲性无码av中文字幕 | 欧美肥老太牲交大战 | 狠狠亚洲超碰狼人久久 | 久久国产精品二国产精品 | 成人无码视频免费播放 | 三上悠亚人妻中文字幕在线 | 精品国产成人一区二区三区 | 国产精品国产三级国产专播 | 亚洲中文字幕在线观看 | 东京无码熟妇人妻av在线网址 | 亚洲国产精品无码久久久久高潮 | 欧美人与禽zoz0性伦交 | 小sao货水好多真紧h无码视频 | 亚洲欧美精品aaaaaa片 | 精品 日韩 国产 欧美 视频 | 久久亚洲精品中文字幕无男同 | 国产国产精品人在线视 | 一本大道伊人av久久综合 | 日韩av无码一区二区三区不卡 | 午夜成人1000部免费视频 | 水蜜桃av无码 | 国产疯狂伦交大片 | 性做久久久久久久免费看 | 国产电影无码午夜在线播放 | 色婷婷综合激情综在线播放 | 亚洲国产精品一区二区美利坚 | 人人妻人人藻人人爽欧美一区 | 特级做a爰片毛片免费69 | 毛片内射-百度 | 亚洲一区二区三区在线观看网站 | 99国产欧美久久久精品 | 久久伊人色av天堂九九小黄鸭 | 嫩b人妻精品一区二区三区 | 男女下面进入的视频免费午夜 | 丰满诱人的人妻3 | 久久久亚洲欧洲日产国码αv | 欧美日韩精品 | 国产9 9在线 | 中文 | 永久黄网站色视频免费直播 | 强辱丰满人妻hd中文字幕 | 熟妇人妻无码xxx视频 | 黑人粗大猛烈进出高潮视频 | 国産精品久久久久久久 | 色婷婷综合激情综在线播放 | 精品久久综合1区2区3区激情 | 成 人影片 免费观看 | 欧美一区二区三区视频在线观看 | 久久久久久久女国产乱让韩 | 亚洲一区av无码专区在线观看 | 国产精品对白交换视频 | www国产精品内射老师 | 好爽又高潮了毛片免费下载 | 无码精品人妻一区二区三区av | 无遮无挡爽爽免费视频 | 性欧美大战久久久久久久 | 欧美成人免费全部网站 | 免费无码一区二区三区蜜桃大 | 成人亚洲精品久久久久 | 亚洲 a v无 码免 费 成 人 a v | 婷婷色婷婷开心五月四房播播 | 鲁一鲁av2019在线 | 中文字幕人妻无码一夲道 | 亚洲国产一区二区三区在线观看 | 国产熟女一区二区三区四区五区 | 男女爱爱好爽视频免费看 | 国产区女主播在线观看 | 鲁鲁鲁爽爽爽在线视频观看 | 六月丁香婷婷色狠狠久久 | 国内精品一区二区三区不卡 | 欧美刺激性大交 | 精品 日韩 国产 欧美 视频 | 亚洲国产av美女网站 | 日日摸日日碰夜夜爽av | 无码中文字幕色专区 | 精品国产一区二区三区四区在线看 | 扒开双腿疯狂进出爽爽爽视频 | 午夜精品一区二区三区的区别 | 图片小说视频一区二区 | 成人免费视频一区二区 | 欧美性猛交xxxx富婆 | 中文字幕人妻无码一夲道 | 国产成人午夜福利在线播放 | 小泽玛莉亚一区二区视频在线 | 欧美阿v高清资源不卡在线播放 | 领导边摸边吃奶边做爽在线观看 | 老熟妇乱子伦牲交视频 | 久久久久久久人妻无码中文字幕爆 | 国产午夜福利100集发布 | 蜜桃无码一区二区三区 | 亚洲一区二区三区无码久久 | 国产免费观看黄av片 | 亚洲熟妇自偷自拍另类 | 国产亚洲视频中文字幕97精品 | 四十如虎的丰满熟妇啪啪 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲精品美女久久久久久久 | 无码国产色欲xxxxx视频 | 白嫩日本少妇做爰 | 精品欧美一区二区三区久久久 | 日日夜夜撸啊撸 | 性色欲网站人妻丰满中文久久不卡 | 亚洲国产综合无码一区 | 国产内射爽爽大片视频社区在线 | 免费观看的无遮挡av | 人人澡人人透人人爽 | 亚洲色欲色欲天天天www | 国产精品亚洲一区二区三区喷水 | 粗大的内捧猛烈进出视频 | 国内少妇偷人精品视频 | 三上悠亚人妻中文字幕在线 | 中文字幕无码av激情不卡 | 乱人伦人妻中文字幕无码久久网 | 黑人巨大精品欧美一区二区 | 久久久av男人的天堂 | 色诱久久久久综合网ywww | 女人被男人爽到呻吟的视频 | 天天摸天天透天天添 | 久久精品中文字幕一区 | 久久成人a毛片免费观看网站 | 国产农村妇女高潮大叫 | 亚洲天堂2017无码 | 中文字幕无码日韩欧毛 | 精品国产一区av天美传媒 | 人妻少妇被猛烈进入中文字幕 | 四十如虎的丰满熟妇啪啪 | 99riav国产精品视频 | 东京热一精品无码av | 亚洲午夜无码久久 | 亚洲中文字幕无码中字 | 天堂无码人妻精品一区二区三区 | 久久国语露脸国产精品电影 | 欧美亚洲日韩国产人成在线播放 | 欧美日韩综合一区二区三区 | 福利一区二区三区视频在线观看 | 免费乱码人妻系列无码专区 | 久久综合狠狠综合久久综合88 | 欧美人与物videos另类 | 中文字幕无码热在线视频 | 亚洲精品鲁一鲁一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 国产成人无码专区 | 色噜噜亚洲男人的天堂 | 国产精品美女久久久网av | 久久99精品久久久久婷婷 | 伊人久久大香线蕉亚洲 | 日本精品人妻无码77777 天堂一区人妻无码 | 一本久道久久综合狠狠爱 | 窝窝午夜理论片影院 | 国产97人人超碰caoprom | 亚洲欧美精品伊人久久 | 妺妺窝人体色www在线小说 | 国产成人精品视频ⅴa片软件竹菊 | 中文字幕人成乱码熟女app | 俄罗斯老熟妇色xxxx | 免费无码肉片在线观看 | 天堂亚洲2017在线观看 | a在线观看免费网站大全 | 伊在人天堂亚洲香蕉精品区 | а√资源新版在线天堂 | 国产后入清纯学生妹 | 两性色午夜视频免费播放 | 日本高清一区免费中文视频 | 99精品久久毛片a片 | 久久99精品国产.久久久久 | 日本精品高清一区二区 | 色噜噜亚洲男人的天堂 | 国产无av码在线观看 | 日韩少妇内射免费播放 | 综合网日日天干夜夜久久 | 欧美放荡的少妇 | 嫩b人妻精品一区二区三区 | 伊人久久婷婷五月综合97色 | 国产成人无码a区在线观看视频app | 又紧又大又爽精品一区二区 | 俺去俺来也在线www色官网 | 亚洲 a v无 码免 费 成 人 a v | av无码电影一区二区三区 | 中文字幕 人妻熟女 | 国产成人无码一二三区视频 | 欧美激情一区二区三区成人 | 大地资源网第二页免费观看 | 少妇性荡欲午夜性开放视频剧场 | 男人的天堂av网站 | 久久综合久久自在自线精品自 | 日本xxxx色视频在线观看免费 | 亚洲性无码av中文字幕 | 国产精品成人av在线观看 | 精品无码成人片一区二区98 | 免费人成在线视频无码 | 2020久久香蕉国产线看观看 | 久久 国产 尿 小便 嘘嘘 | 精品国偷自产在线视频 | 未满小14洗澡无码视频网站 | 欧美熟妇另类久久久久久多毛 | 国产精品99爱免费视频 | 精品无码成人片一区二区98 | 97人妻精品一区二区三区 | 欧美日韩在线亚洲综合国产人 | 日本一本二本三区免费 | 成 人影片 免费观看 | 色婷婷久久一区二区三区麻豆 | 特黄特色大片免费播放器图片 | 国产sm调教视频在线观看 | 久久精品国产一区二区三区肥胖 | 丝袜人妻一区二区三区 | 国产精品第一区揄拍无码 | 红桃av一区二区三区在线无码av | 日本又色又爽又黄的a片18禁 | 婷婷综合久久中文字幕蜜桃三电影 | 老熟妇乱子伦牲交视频 | 我要看www免费看插插视频 | 激情内射亚州一区二区三区爱妻 | 国产成人无码区免费内射一片色欲 | 日韩无码专区 | 亚洲国产精品成人久久蜜臀 | 色婷婷综合激情综在线播放 | 色综合久久网 | 精品偷拍一区二区三区在线看 | 日日天日日夜日日摸 | 亚洲精品一区二区三区四区五区 | 久久精品国产大片免费观看 | 牲欲强的熟妇农村老妇女视频 | 精品国产乱码久久久久乱码 | 国产无遮挡吃胸膜奶免费看 | 一本无码人妻在中文字幕免费 | 少妇无码吹潮 | 亚洲国产精品一区二区第一页 | 乱中年女人伦av三区 | 国内少妇偷人精品视频免费 | 一本久道高清无码视频 | 人妻无码αv中文字幕久久琪琪布 | 澳门永久av免费网站 | 装睡被陌生人摸出水好爽 | 国产电影无码午夜在线播放 | 特黄特色大片免费播放器图片 | 久久综合香蕉国产蜜臀av | 亚洲乱码中文字幕在线 | 午夜精品久久久久久久 | 欧美国产日韩久久mv | 麻豆md0077饥渴少妇 | 欧美日韩在线亚洲综合国产人 | 欧美日本精品一区二区三区 | 久久亚洲中文字幕无码 | 领导边摸边吃奶边做爽在线观看 | 亚洲国产精品无码一区二区三区 | 亚洲欧美日韩综合久久久 | 久久综合香蕉国产蜜臀av | 无码人妻精品一区二区三区下载 | 亚洲成av人片在线观看无码不卡 | 亚洲国产精品一区二区美利坚 | 我要看www免费看插插视频 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品永久免费视频 | 欧美三级a做爰在线观看 | 中文字幕无线码 | 成人综合网亚洲伊人 | 亚洲成a人一区二区三区 | 国产精品高潮呻吟av久久4虎 | 国产偷国产偷精品高清尤物 | 亚洲日本在线电影 | 妺妺窝人体色www婷婷 | 又大又黄又粗又爽的免费视频 | 日本熟妇乱子伦xxxx | 狠狠噜狠狠狠狠丁香五月 | 天堂亚洲免费视频 | 国产真实夫妇视频 | 国产av无码专区亚洲a∨毛片 | 日产国产精品亚洲系列 | 天天摸天天透天天添 | 亚洲乱码国产乱码精品精 | 亲嘴扒胸摸屁股激烈网站 | 亚洲精品国产精品乱码视色 | 亚洲日韩一区二区三区 | 一二三四在线观看免费视频 | 激情国产av做激情国产爱 | 亚洲精品美女久久久久久久 | 在线观看欧美一区二区三区 | 人人爽人人爽人人片av亚洲 | 国产精品久久久久9999小说 | 正在播放老肥熟妇露脸 | 中文字幕人妻丝袜二区 | 国产午夜精品一区二区三区嫩草 | 玩弄中年熟妇正在播放 | 国产午夜精品一区二区三区嫩草 | 成人av无码一区二区三区 | 国产一区二区三区影院 | 中文字幕无码av激情不卡 | 久久成人a毛片免费观看网站 | 76少妇精品导航 | 国产精品人妻一区二区三区四 | 国产精品久免费的黄网站 | 奇米影视888欧美在线观看 | 亚洲小说春色综合另类 | 色综合视频一区二区三区 | 丰满护士巨好爽好大乳 | 婷婷综合久久中文字幕蜜桃三电影 | 国产片av国语在线观看 | 任你躁在线精品免费 | 久久精品国产一区二区三区肥胖 | 久久综合激激的五月天 | 亚洲精品久久久久久一区二区 | 亚洲乱码日产精品bd | 久久久国产精品无码免费专区 | 67194成是人免费无码 | 又大又黄又粗又爽的免费视频 | 国产区女主播在线观看 | 成人亚洲精品久久久久软件 | 欧美日韩一区二区免费视频 | 成人免费视频一区二区 | 偷窥村妇洗澡毛毛多 | 99在线 | 亚洲 | 九九综合va免费看 | 小sao货水好多真紧h无码视频 | 精品水蜜桃久久久久久久 | 中文无码伦av中文字幕 | 最近的中文字幕在线看视频 | 丁香花在线影院观看在线播放 | 亚洲精品国产a久久久久久 | 激情五月综合色婷婷一区二区 | 曰韩少妇内射免费播放 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 午夜福利一区二区三区在线观看 | 蜜桃视频插满18在线观看 | 国产精品亚洲一区二区三区喷水 | 亚洲区小说区激情区图片区 | 欧美变态另类xxxx | 国语精品一区二区三区 | 骚片av蜜桃精品一区 | 国产国语老龄妇女a片 | 亚洲国产日韩a在线播放 | 国产精品理论片在线观看 | 日本护士xxxxhd少妇 | 香蕉久久久久久av成人 | 亚洲日本在线电影 | 在线亚洲高清揄拍自拍一品区 | 国产色精品久久人妻 | 性生交大片免费看l | 牛和人交xxxx欧美 | 99麻豆久久久国产精品免费 | 亚洲国产精品久久久天堂 | 国产极品视觉盛宴 | 中文精品久久久久人妻不卡 | 伊人色综合久久天天小片 | 成人aaa片一区国产精品 | 亚洲自偷自偷在线制服 | 亚洲欧美综合区丁香五月小说 | 国产午夜亚洲精品不卡 | 久久综合九色综合欧美狠狠 | 美女黄网站人色视频免费国产 | 久久99热只有频精品8 | 欧美 亚洲 国产 另类 | 亚洲欧美综合区丁香五月小说 | 欧美性黑人极品hd | 亚洲成a人片在线观看无码 | 国内少妇偷人精品视频免费 | 亚洲国精产品一二二线 | 少妇无套内谢久久久久 | 粉嫩少妇内射浓精videos | 老太婆性杂交欧美肥老太 | 无码帝国www无码专区色综合 | 国产精品爱久久久久久久 | 狠狠躁日日躁夜夜躁2020 | 久久99精品国产.久久久久 | 人人妻在人人 | 牛和人交xxxx欧美 | 天天躁夜夜躁狠狠是什么心态 | 亚洲精品无码国产 | 中文字幕色婷婷在线视频 | 亚洲熟妇色xxxxx欧美老妇 | 日韩av无码一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 狂野欧美性猛xxxx乱大交 | 国产精品久久久久久亚洲毛片 | 中文字幕日产无线码一区 | 强开小婷嫩苞又嫩又紧视频 | 又大又硬又黄的免费视频 | 国产精品99久久精品爆乳 | 国产成人精品视频ⅴa片软件竹菊 | 日本在线高清不卡免费播放 | 亚洲狠狠色丁香婷婷综合 | 亚洲日本一区二区三区在线 | 大肉大捧一进一出好爽视频 | 精品无人区无码乱码毛片国产 | 欧美日韩亚洲国产精品 | 国产麻豆精品精东影业av网站 | 牲欲强的熟妇农村老妇女 | 色婷婷香蕉在线一区二区 | 国产精品久久久一区二区三区 | 亚洲欧美日韩综合久久久 | 久久亚洲精品中文字幕无男同 | 鲁大师影院在线观看 | 亚洲阿v天堂在线 | 国产麻豆精品一区二区三区v视界 | 久久精品国产精品国产精品污 | 国产高潮视频在线观看 | 人人妻人人澡人人爽人人精品浪潮 | 久久熟妇人妻午夜寂寞影院 | 色综合久久久无码网中文 | 最近的中文字幕在线看视频 | 国产另类ts人妖一区二区 | 一区二区传媒有限公司 | 久久综合网欧美色妞网 | 国产热a欧美热a在线视频 | 精品亚洲韩国一区二区三区 | 人妻少妇精品无码专区动漫 | 无码毛片视频一区二区本码 | 青草视频在线播放 | 国产疯狂伦交大片 | 99国产精品白浆在线观看免费 | 麻豆md0077饥渴少妇 | 中文字幕av日韩精品一区二区 | 国产精品丝袜黑色高跟鞋 | 乌克兰少妇性做爰 | 人人妻人人澡人人爽欧美一区九九 | 国产又爽又黄又刺激的视频 | 一二三四在线观看免费视频 | 女人被男人爽到呻吟的视频 | 国产精品永久免费视频 | 久久精品国产一区二区三区肥胖 | 免费无码av一区二区 | 久久久国产精品无码免费专区 | 国产女主播喷水视频在线观看 | 娇妻被黑人粗大高潮白浆 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲日韩av一区二区三区中文 | 人妻熟女一区 | 台湾无码一区二区 | √8天堂资源地址中文在线 | 粉嫩少妇内射浓精videos | 久青草影院在线观看国产 | 人妻尝试又大又粗久久 | 丁香花在线影院观看在线播放 | 精品久久久无码人妻字幂 | 精品国产aⅴ无码一区二区 | 97人妻精品一区二区三区 | 清纯唯美经典一区二区 | 国产精品久久久久无码av色戒 | 97久久国产亚洲精品超碰热 | 亚洲成av人片在线观看无码不卡 | 国产内射爽爽大片视频社区在线 | 国产激情无码一区二区app | 欧美日韩色另类综合 | 狂野欧美性猛交免费视频 | 久久久久亚洲精品男人的天堂 | 婷婷色婷婷开心五月四房播播 | 亚洲精品一区二区三区四区五区 | 欧美性生交xxxxx久久久 | 色噜噜亚洲男人的天堂 | 在教室伦流澡到高潮hnp视频 | 欧美国产日产一区二区 | 亚洲日韩精品欧美一区二区 | 日日干夜夜干 | 人妻少妇精品无码专区二区 | 色欲av亚洲一区无码少妇 | 国产精品亚洲综合色区韩国 | 亚洲人成无码网www | 成人毛片一区二区 | 九九久久精品国产免费看小说 | 国产艳妇av在线观看果冻传媒 | 久久99精品国产麻豆蜜芽 | 岛国片人妻三上悠亚 | 无遮挡国产高潮视频免费观看 | 欧美激情综合亚洲一二区 | 国产成人无码av片在线观看不卡 | 内射老妇bbwx0c0ck | 日本成熟视频免费视频 | 国产人妻大战黑人第1集 | 中文字幕无码免费久久99 | 无码人妻精品一区二区三区下载 | 99久久人妻精品免费二区 | 最新版天堂资源中文官网 | 欧美人与善在线com | 亚洲精品国产精品乱码视色 | 日本大香伊一区二区三区 | 午夜肉伦伦影院 | 久久久www成人免费毛片 | 一区二区三区乱码在线 | 欧洲 | 人人妻人人澡人人爽欧美一区 | 国产精品va在线观看无码 | 免费观看又污又黄的网站 | 日本一卡二卡不卡视频查询 | 久久人人爽人人爽人人片ⅴ | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产人妻精品一区二区三区 | 国产av剧情md精品麻豆 | 欧美 丝袜 自拍 制服 另类 | 亚洲一区二区三区 | 性欧美疯狂xxxxbbbb | 色欲av亚洲一区无码少妇 | 久久国产精品偷任你爽任你 | 久久精品国产精品国产精品污 | 国产偷国产偷精品高清尤物 | 欧美日本精品一区二区三区 | 亚洲精品午夜国产va久久成人 | 亚洲欧美国产精品专区久久 | 国产精品丝袜黑色高跟鞋 | 国产97在线 | 亚洲 | 亚洲综合无码一区二区三区 | 无码人妻黑人中文字幕 | 人人妻人人澡人人爽欧美一区 | 激情五月综合色婷婷一区二区 | 久久国产36精品色熟妇 | 亚洲乱码日产精品bd | 午夜福利一区二区三区在线观看 | 亚洲va中文字幕无码久久不卡 | 国产成人av免费观看 | 亚洲男人av天堂午夜在 | 亚洲国产精品无码一区二区三区 | 久久久久免费看成人影片 | 福利一区二区三区视频在线观看 | 波多野结衣一区二区三区av免费 | 久久午夜无码鲁丝片秋霞 | 精品国产麻豆免费人成网站 | 久久久精品人妻久久影视 | 97无码免费人妻超级碰碰夜夜 | 国产成人精品无码播放 | 久久五月精品中文字幕 | 亚洲日韩中文字幕在线播放 | 色婷婷欧美在线播放内射 | 精品日本一区二区三区在线观看 | 男女猛烈xx00免费视频试看 | 东京一本一道一二三区 | 樱花草在线播放免费中文 | 伊在人天堂亚洲香蕉精品区 | 久久久久久国产精品无码下载 | 99久久婷婷国产综合精品青草免费 | 日本一区二区三区免费播放 | 色欲人妻aaaaaaa无码 | 97久久精品无码一区二区 | 人妻互换免费中文字幕 | 国产成人一区二区三区在线观看 | 妺妺窝人体色www婷婷 | 国产99久久精品一区二区 | 国产亚洲精品久久久久久久 | 亚洲综合无码久久精品综合 | 亚洲人成网站免费播放 | 熟女少妇在线视频播放 | 亚洲爆乳无码专区 | 亚洲人成影院在线无码按摩店 | 国内老熟妇对白xxxxhd | 精品亚洲韩国一区二区三区 | 在教室伦流澡到高潮hnp视频 | 无码国产乱人伦偷精品视频 | 久久综合给久久狠狠97色 | 久在线观看福利视频 | 国产成人无码av一区二区 | 亚洲精品国产a久久久久久 | 国产莉萝无码av在线播放 | 麻豆md0077饥渴少妇 | 午夜精品久久久久久久久 | 少妇无码一区二区二三区 | 午夜成人1000部免费视频 | 麻豆精产国品 | 天天拍夜夜添久久精品大 | 久激情内射婷内射蜜桃人妖 | 国内揄拍国内精品少妇国语 | 好男人社区资源 | 亚洲第一无码av无码专区 | 国产高清不卡无码视频 | 色偷偷人人澡人人爽人人模 | 男人扒开女人内裤强吻桶进去 | 丰满少妇高潮惨叫视频 | 久久aⅴ免费观看 | 国产精品久久国产三级国 | 成熟妇人a片免费看网站 | 精品国产成人一区二区三区 | 在线播放免费人成毛片乱码 | 精品厕所偷拍各类美女tp嘘嘘 | 一个人看的视频www在线 | 国产精品内射视频免费 | 香蕉久久久久久av成人 | 久久精品国产一区二区三区肥胖 | 超碰97人人做人人爱少妇 | 少妇性l交大片欧洲热妇乱xxx | 蜜臀aⅴ国产精品久久久国产老师 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 欧美日韩人成综合在线播放 | 性啪啪chinese东北女人 | 波多野结衣av一区二区全免费观看 | 精品熟女少妇av免费观看 | 亚洲中文字幕在线无码一区二区 | 国产一区二区三区四区五区加勒比 | 内射爽无广熟女亚洲 | 超碰97人人射妻 | 久久久中文久久久无码 | 女人被男人爽到呻吟的视频 | 日韩人妻无码一区二区三区久久99 | 成人试看120秒体验区 | 欧美日韩色另类综合 | 精品一区二区三区波多野结衣 | 国产精品国产三级国产专播 | 久久人人爽人人人人片 | 中文字幕av无码一区二区三区电影 | 国产人妻久久精品二区三区老狼 | 精品无码国产一区二区三区av | 综合激情五月综合激情五月激情1 | 中文字幕无码免费久久99 | 精品人妻av区 | 国产精品无套呻吟在线 | av香港经典三级级 在线 | 日本爽爽爽爽爽爽在线观看免 | 国内老熟妇对白xxxxhd | 亚洲综合伊人久久大杳蕉 | 人人妻人人澡人人爽精品欧美 | 风流少妇按摩来高潮 | 18禁黄网站男男禁片免费观看 | 曰韩少妇内射免费播放 | 国产成人一区二区三区在线观看 | 熟妇人妻无乱码中文字幕 | 久久zyz资源站无码中文动漫 | 99精品无人区乱码1区2区3区 | 久久久久免费看成人影片 | 蜜桃视频插满18在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲一区av无码专区在线观看 | 国产偷自视频区视频 | 中文字幕无码免费久久99 | av无码久久久久不卡免费网站 | 1000部啪啪未满十八勿入下载 | 天天做天天爱天天爽综合网 | 人人妻在人人 | 无码人妻少妇伦在线电影 | 国产成人一区二区三区在线观看 | 日本又色又爽又黄的a片18禁 | 国产亚av手机在线观看 | 欧美老人巨大xxxx做受 | 精品无人区无码乱码毛片国产 | 国产精品久久国产精品99 | 久久久亚洲欧洲日产国码αv | 欧美丰满熟妇xxxx性ppx人交 | 性欧美熟妇videofreesex | 人人妻人人澡人人爽欧美精品 | 国产亚洲欧美日韩亚洲中文色 | 亚洲春色在线视频 | 中文字幕无线码免费人妻 | 蜜桃视频韩日免费播放 | 日韩欧美群交p片內射中文 | 蜜桃av抽搐高潮一区二区 | 97夜夜澡人人双人人人喊 | 97久久国产亚洲精品超碰热 | 欧洲精品码一区二区三区免费看 | 成人一区二区免费视频 | 亚洲国产高清在线观看视频 | 5858s亚洲色大成网站www | 天海翼激烈高潮到腰振不止 | √天堂中文官网8在线 | 色综合久久久久综合一本到桃花网 | 免费播放一区二区三区 | 成年美女黄网站色大免费全看 | 无码人妻精品一区二区三区下载 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲成av人影院在线观看 | 欧美变态另类xxxx | 亚洲精品www久久久 | 野狼第一精品社区 | 欧美精品免费观看二区 | 欧美人与动性行为视频 | 男人扒开女人内裤强吻桶进去 | 成人一在线视频日韩国产 | 日韩成人一区二区三区在线观看 | 动漫av一区二区在线观看 | 亚洲欧美日韩成人高清在线一区 | 欧美日本免费一区二区三区 | 免费观看又污又黄的网站 | 亚洲日韩中文字幕在线播放 | 无码福利日韩神码福利片 | 亚洲爆乳大丰满无码专区 | 1000部啪啪未满十八勿入下载 | 中文字幕日韩精品一区二区三区 | 亚洲色无码一区二区三区 | 无遮挡国产高潮视频免费观看 | 亚洲精品国产a久久久久久 | 欧美xxxx黑人又粗又长 | 日韩少妇内射免费播放 | 2020最新国产自产精品 | 久久久久成人精品免费播放动漫 | 免费观看激色视频网站 | 欧洲精品码一区二区三区免费看 | 亚洲综合精品香蕉久久网 | 色婷婷久久一区二区三区麻豆 | 日本乱人伦片中文三区 | 伊在人天堂亚洲香蕉精品区 | a在线亚洲男人的天堂 | 精品久久久无码人妻字幂 | 波多野结衣av在线观看 | 国产精品多人p群无码 | 日韩人妻无码中文字幕视频 | 国产 浪潮av性色四虎 | 精品国精品国产自在久国产87 | 久久精品人人做人人综合试看 | 国精产品一区二区三区 | 欧美性生交xxxxx久久久 | 亚洲一区二区三区无码久久 | 亚洲a无码综合a国产av中文 | 大色综合色综合网站 | 国产凸凹视频一区二区 | 熟妇人妻激情偷爽文 | 人妻少妇精品视频专区 | 性生交大片免费看女人按摩摩 | √天堂中文官网8在线 | 噜噜噜亚洲色成人网站 | 精品一区二区三区波多野结衣 | 亚洲区小说区激情区图片区 | 成人性做爰aaa片免费看不忠 | 两性色午夜免费视频 | 成人片黄网站色大片免费观看 | 精品久久久久久人妻无码中文字幕 | 窝窝午夜理论片影院 | 午夜精品久久久久久久久 | 青青青手机频在线观看 | 丰满少妇熟乱xxxxx视频 | 亚洲狠狠色丁香婷婷综合 | 国产成人综合美国十次 | 久久视频在线观看精品 | 成人无码视频在线观看网站 | 国产两女互慰高潮视频在线观看 | 中文字幕乱码人妻无码久久 | 亚洲综合色区中文字幕 | 精品国产福利一区二区 | 国产绳艺sm调教室论坛 | 成人毛片一区二区 | 色综合久久久久综合一本到桃花网 | 日日麻批免费40分钟无码 | 中文字幕乱码亚洲无线三区 | 在线欧美精品一区二区三区 | 国产黄在线观看免费观看不卡 | 最近免费中文字幕中文高清百度 | 人妻少妇精品无码专区动漫 | 一本无码人妻在中文字幕免费 | 丰满肥臀大屁股熟妇激情视频 | 国产精品怡红院永久免费 | 精品aⅴ一区二区三区 | 在线精品国产一区二区三区 | 国产成人综合在线女婷五月99播放 | 日本精品人妻无码77777 天堂一区人妻无码 | 色 综合 欧美 亚洲 国产 | 一本大道久久东京热无码av | 国产成人无码专区 | 免费无码午夜福利片69 | 波多野结衣一区二区三区av免费 | 丰满人妻翻云覆雨呻吟视频 | 无码人妻出轨黑人中文字幕 | 性开放的女人aaa片 | 日韩av无码一区二区三区不卡 | 亚洲热妇无码av在线播放 | 亚洲国产综合无码一区 | 精品一区二区三区波多野结衣 | 久久久久久国产精品无码下载 | 久久久久免费看成人影片 | 国产精品丝袜黑色高跟鞋 | 国产亚洲人成a在线v网站 | 国产精品亚洲五月天高清 | 欧美野外疯狂做受xxxx高潮 | 国产成人综合美国十次 | 波多野结衣乳巨码无在线观看 | 未满小14洗澡无码视频网站 | 红桃av一区二区三区在线无码av | 精品久久8x国产免费观看 | 亚洲精品综合五月久久小说 | 久热国产vs视频在线观看 | 欧美性猛交内射兽交老熟妇 | 人人澡人人妻人人爽人人蜜桃 | 强开小婷嫩苞又嫩又紧视频 | 黑人巨大精品欧美一区二区 | 初尝人妻少妇中文字幕 | 精品国产一区二区三区av 性色 | 内射后入在线观看一区 | 成人性做爰aaa片免费看 | 强辱丰满人妻hd中文字幕 | 亚洲欧美日韩综合久久久 | 国产精品人人爽人人做我的可爱 | 国产内射爽爽大片视频社区在线 | 99国产精品白浆在线观看免费 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲男人av天堂午夜在 | 18禁止看的免费污网站 | 亚洲成a人片在线观看无码 | 久久久亚洲欧洲日产国码αv | 国产极品美女高潮无套在线观看 | 欧美zoozzooz性欧美 | 高潮喷水的毛片 | 美女张开腿让人桶 | 男人的天堂av网站 | 欧美兽交xxxx×视频 | 日本www一道久久久免费榴莲 | 人妻插b视频一区二区三区 | 少妇厨房愉情理9仑片视频 | 激情亚洲一区国产精品 | 无码av最新清无码专区吞精 | 亚洲人成影院在线无码按摩店 | 精品国产福利一区二区 | 国产精品va在线观看无码 | 狠狠躁日日躁夜夜躁2020 | 青青青手机频在线观看 | 5858s亚洲色大成网站www | 日韩人妻系列无码专区 | 图片区 小说区 区 亚洲五月 | 久久久久久九九精品久 | 精品午夜福利在线观看 | 牲欲强的熟妇农村老妇女 | 亚洲s码欧洲m码国产av | 亚洲精品久久久久avwww潮水 | 四十如虎的丰满熟妇啪啪 | 欧美高清在线精品一区 | 少妇人妻大乳在线视频 | 性欧美疯狂xxxxbbbb | 四虎影视成人永久免费观看视频 | 黑人巨大精品欧美一区二区 | 色综合久久久无码中文字幕 | 亚洲中文字幕无码中文字在线 | 国产精品爱久久久久久久 | 婷婷丁香六月激情综合啪 | 日韩精品无码一区二区中文字幕 | 无码吃奶揉捏奶头高潮视频 | 在线精品国产一区二区三区 | 曰韩少妇内射免费播放 | 欧美刺激性大交 | 中文字幕 人妻熟女 | 性欧美大战久久久久久久 | 丝袜足控一区二区三区 | 欧美精品无码一区二区三区 | аⅴ资源天堂资源库在线 | 人妻插b视频一区二区三区 | 久久精品国产大片免费观看 | 免费无码av一区二区 | 激情人妻另类人妻伦 | 综合人妻久久一区二区精品 | 色爱情人网站 | 无码av岛国片在线播放 | 亚洲成在人网站无码天堂 | 日本一卡二卡不卡视频查询 | 国产舌乚八伦偷品w中 | 国产精品视频免费播放 | 东京热无码av男人的天堂 | 无码人妻丰满熟妇区毛片18 | 丰满肥臀大屁股熟妇激情视频 | 日本饥渴人妻欲求不满 | 久久午夜无码鲁丝片秋霞 | 国产精品自产拍在线观看 | 久久国产36精品色熟妇 | 精品国产乱码久久久久乱码 | 亚洲中文字幕在线无码一区二区 | 女人被男人爽到呻吟的视频 | 国产精品亚洲专区无码不卡 | 性色欲情网站iwww九文堂 | 欧美真人作爱免费视频 | 亚洲の无码国产の无码影院 | 久久久精品成人免费观看 | 精品无码成人片一区二区98 | 兔费看少妇性l交大片免费 | 在教室伦流澡到高潮hnp视频 | 欧美亚洲国产一区二区三区 | 亚洲熟妇色xxxxx亚洲 | 久久99精品国产.久久久久 | 国产精品第一国产精品 | 国产精品沙发午睡系列 | 欧美放荡的少妇 | 久久综合狠狠综合久久综合88 | 荫蒂被男人添的好舒服爽免费视频 | 在线a亚洲视频播放在线观看 | 欧美 丝袜 自拍 制服 另类 | 亚洲综合精品香蕉久久网 | 亚洲国产精品毛片av不卡在线 | 人妻有码中文字幕在线 | 欧美 丝袜 自拍 制服 另类 | 日韩精品久久久肉伦网站 | 狂野欧美性猛交免费视频 | 国产精品视频免费播放 | 少妇性l交大片欧洲热妇乱xxx | 久久国内精品自在自线 | 性欧美牲交xxxxx视频 | 久久视频在线观看精品 | 女人被男人爽到呻吟的视频 | 久久无码人妻影院 | 久久精品99久久香蕉国产色戒 | 思思久久99热只有频精品66 | 大肉大捧一进一出视频出来呀 | 精品 日韩 国产 欧美 视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久精品国产一区二区三区 | 国产国语老龄妇女a片 | 东京热无码av男人的天堂 | 亚洲gv猛男gv无码男同 | 中文字幕人妻无码一夲道 | 亚洲中文字幕无码中文字在线 | 51国偷自产一区二区三区 | 亚洲经典千人经典日产 | 亚洲精品久久久久久久久久久 | 一本色道久久综合狠狠躁 | 亚洲一区二区三区在线观看网站 | 人人澡人人妻人人爽人人蜜桃 | 色欲久久久天天天综合网精品 | 国产人妖乱国产精品人妖 | 狠狠综合久久久久综合网 | 亚拍精品一区二区三区探花 | 精品无码一区二区三区爱欲 | 国产午夜无码精品免费看 | 极品尤物被啪到呻吟喷水 | 亚洲第一无码av无码专区 | 国产九九九九九九九a片 | 国产性生交xxxxx无码 | 欧美精品无码一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 亚洲综合无码久久精品综合 | 亚洲精品成a人在线观看 | 激情人妻另类人妻伦 | 成 人 网 站国产免费观看 | 四虎国产精品免费久久 | 国精品人妻无码一区二区三区蜜柚 | 成人试看120秒体验区 | 人妻体内射精一区二区三四 | 人人爽人人澡人人人妻 | 免费观看黄网站 | 国产情侣作爱视频免费观看 | 少妇被粗大的猛进出69影院 | 成人免费视频一区二区 | 伊人久久大香线蕉av一区二区 | 亚洲人亚洲人成电影网站色 | 狠狠综合久久久久综合网 | 一本久久a久久精品vr综合 | 国产亚洲欧美日韩亚洲中文色 | 暴力强奷在线播放无码 | 日日摸天天摸爽爽狠狠97 | 亚洲自偷自拍另类第1页 | 熟女俱乐部五十路六十路av | 精品亚洲韩国一区二区三区 | 国产精品高潮呻吟av久久4虎 | 亚洲狠狠婷婷综合久久 | 成人免费视频视频在线观看 免费 | 国产午夜亚洲精品不卡 | 正在播放老肥熟妇露脸 | 激情亚洲一区国产精品 | 玩弄人妻少妇500系列视频 | 欧美刺激性大交 | 任你躁国产自任一区二区三区 | 98国产精品综合一区二区三区 | 欧美精品国产综合久久 | 国产深夜福利视频在线 | 国产内射爽爽大片视频社区在线 | 国产超级va在线观看视频 | 国产精品人人爽人人做我的可爱 | 图片区 小说区 区 亚洲五月 | 国产精品毛片一区二区 | 国内精品久久久久久中文字幕 | 鲁大师影院在线观看 | 欧美日韩亚洲国产精品 | 日韩人妻无码中文字幕视频 | 成人无码精品1区2区3区免费看 | 欧美激情内射喷水高潮 | 老子影院午夜精品无码 | 日韩精品成人一区二区三区 | 国产午夜视频在线观看 | 熟女少妇人妻中文字幕 | 亚洲精品一区二区三区在线 | 久久久久99精品国产片 | 中文字幕 人妻熟女 | 国产精品无码永久免费888 | 欧美成人午夜精品久久久 | 妺妺窝人体色www婷婷 | 欧美性生交活xxxxxdddd | 在线a亚洲视频播放在线观看 | 亚洲国产精华液网站w | 永久免费观看国产裸体美女 | 国产农村妇女高潮大叫 | yw尤物av无码国产在线观看 | 欧美丰满老熟妇xxxxx性 | yw尤物av无码国产在线观看 | 国产又粗又硬又大爽黄老大爷视 | 亚洲日本va午夜在线电影 | 成人综合网亚洲伊人 | 蜜桃av抽搐高潮一区二区 | 蜜臀aⅴ国产精品久久久国产老师 | 欧美三级不卡在线观看 | 内射巨臀欧美在线视频 | 又色又爽又黄的美女裸体网站 | 东京无码熟妇人妻av在线网址 | 又大又硬又黄的免费视频 | 精品无码国产一区二区三区av | 99视频精品全部免费免费观看 | 亚洲国产成人av在线观看 | 成人亚洲精品久久久久软件 | 亚洲成a人片在线观看无码 | 久久久久国色av免费观看性色 | 色欲综合久久中文字幕网 | 国产精品理论片在线观看 | 夜精品a片一区二区三区无码白浆 | 无码毛片视频一区二区本码 | 国产内射爽爽大片视频社区在线 | 欧美黑人性暴力猛交喷水 | 香蕉久久久久久av成人 | 成人精品一区二区三区中文字幕 | 中文毛片无遮挡高清免费 | 激情五月综合色婷婷一区二区 | 成人性做爰aaa片免费看不忠 | 好屌草这里只有精品 | 国产精品99爱免费视频 | 精品国产乱码久久久久乱码 | 在线看片无码永久免费视频 | 国产精华av午夜在线观看 | 中文字幕精品av一区二区五区 | 久久伊人色av天堂九九小黄鸭 | 久久久久99精品成人片 | 丝袜足控一区二区三区 | 粗大的内捧猛烈进出视频 | 无码精品国产va在线观看dvd | 国产亚洲欧美日韩亚洲中文色 | 国产又粗又硬又大爽黄老大爷视 | 玩弄少妇高潮ⅹxxxyw | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲日韩一区二区三区 | 国产精品久久久久久无码 | aa片在线观看视频在线播放 | 成人免费无码大片a毛片 | 乱中年女人伦av三区 | 亚洲欧美综合区丁香五月小说 | 国精产品一品二品国精品69xx | 精品久久久久香蕉网 | 精品偷拍一区二区三区在线看 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久国产精品二国产精品 | 人妻人人添人妻人人爱 | 曰本女人与公拘交酡免费视频 | 亚洲成a人片在线观看日本 | 久热国产vs视频在线观看 | 少妇人妻av毛片在线看 | 18无码粉嫩小泬无套在线观看 | 亚洲 激情 小说 另类 欧美 | 中文字幕乱码中文乱码51精品 | 精品欧洲av无码一区二区三区 | 无码一区二区三区在线观看 | 熟妇人妻无码xxx视频 | 内射白嫩少妇超碰 | 国产在线无码精品电影网 | 国内精品久久久久久中文字幕 | 美女张开腿让人桶 | 熟女俱乐部五十路六十路av | 久久久久久亚洲精品a片成人 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品.xx视频.xxtv | 亚洲成av人影院在线观看 | www国产亚洲精品久久网站 | 中文字幕无码免费久久9一区9 | 亚洲无人区午夜福利码高清完整版 | 亚洲熟悉妇女xxx妇女av | 国产亚洲视频中文字幕97精品 | 久久国产精品偷任你爽任你 | 97色伦图片97综合影院 | 水蜜桃色314在线观看 | 国产精品久久久久久无码 | 麻豆国产丝袜白领秘书在线观看 | www一区二区www免费 |