精华内容
下载资源
问答
  • 2021-02-28 16:41:10

    package com.test;

    import org.junit.Test;

    import javax.imageio.ImageIO;

    import java.awt.*;

    import java.awt.image.BufferedImage;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.InputStream;

    import java.io.OutputStream;

    public class JunitImage {

    @Test

    public void testImage(){

    markImageByText("hello world","D:/1.jpg","D:2.jpg",45,new Color(0,0,0),"JPG");

    }

    /**

    * 给图片添加水印文字、可设置水印文字的旋转角度

    * @param logoText 要写入的文字

    * @param srcImgPath 源图片路径

    * @param newImagePath 新图片路径

    * @param degree 旋转角度

    * @param color 字体颜色

    * @param formaName 图片后缀

    */

    public static void markImageByText(String logoText, String srcImgPath,String newImagePath,Integer degree,Color color,String formaName) {

    InputStream is = null;

    OutputStream os = null;

    try {

    // 1、源图片

    java.awt.Image srcImg = ImageIO.read(new File(srcImgPath));

    BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);

    // 2、得到画笔对象

    Graphics2D g = buffImg.createGraphics();

    // 3、设置对线段的锯齿状边缘处理

    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);

    g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), java.awt.Image.SCALE_SMOOTH), 0, 0, null);

    // 4、设置水印旋转

    if (null != degree) {

    g.rotate(Math.toRadians(degree), buffImg.getWidth()/2,buffImg.getHeight() /2);

    }

    // 5、设置水印文字颜色

    g.setColor(color);

    // 6、设置水印文字Font

    g.setFont(new java.awt.Font("宋体", java.awt.Font.BOLD, buffImg.getHeight() /2));

    // 7、设置水印文字透明度

    g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.15f));

    // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)

    g.drawString(logoText, buffImg.getWidth()/2 , buffImg.getHeight()/2);

    // 9、释放资源

    g.dispose();

    // 10、生成图片

    os = new FileOutputStream(newImagePath);

    ImageIO.write(buffImg, formaName, os);

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    if (null != is)

    is.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    try {

    if (null != os)

    os.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    }

    更多相关内容
  • java给图片添加水印

    2015-12-14 15:23:26
    java给图片添加水印,网站开发过程中可能需要对上传的图片添加属于本网站的水印,这是一个工具类,能实现添加文字水印和添加图片水印。
  • java 给图片加水印

    2021-04-02 16:13:16
    java给图片添加水印 下面是工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import javax.imageio.ImageIO; import javax.imageio....

     java给图片添加水印 

    下面是工具类

    
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.core.io.ClassPathResource;
    
    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageOutputStream;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * 
     * @description 添加图片水印
     */
    public class ImageWatermarkUtil {
        private static Logger logger = LoggerFactory.getLogger(ImageWatermarkUtil.class);
    
        private static String imgType[] = {".png", ".jpg", ".jpeg", ".bmp"};
    
        /**
         * 给图片增加水印
         *
         * @param inputImg 图片文件流
         * @param suffix   文件结尾 例如.png/.jpg
         * @return
         * @throws IOException
         */
        public static InputStream addPicMark(InputStream inputImg, String suffix) {
            try {
                boolean addPicMark = false;
                for (String type : imgType) {
                    if (type.equalsIgnoreCase(suffix)) {
                        addPicMark = true;
                    }
                }
                if (!addPicMark) {
                    return inputImg;
                }
    
                ClassPathResource classPathResource = new ClassPathResource("static/assets/img/watermark.png");
                InputStream inputStream = classPathResource.getInputStream();
                Image mark = ImageIO.read(inputStream);
                Image img = ImageIO.read(inputImg);
                // 加图片水印
                int imgWidth = img.getWidth(null);
                int imgHeight = img.getHeight(null);
                int markWidth = mark.getWidth(null);
                int markHeight = mark.getHeight(null);
                if (imgWidth <= markWidth || imgHeight <= markHeight) {
                    return inputImg;
                }
                BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight,
                        BufferedImage.TYPE_INT_RGB);
                //创建一个指定 BufferedImage 的 Graphics2D 对象
                Graphics2D g = bufImg.createGraphics();
                //设置对线段的锯齿状边缘处理
                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
                //呈现一个图像,在绘制前进行从图像空间到用户空间的转换
                g.drawImage(img.getScaledInstance(imgWidth, imgHeight, Image.SCALE_SMOOTH), 0, 0, null);
                //水印图象的路径 水印一般为gif或者png的,这样可设置透明度
                ImageIcon imgIcon = new ImageIcon(mark);
                //得到Image对象。
                Image con = imgIcon.getImage();
                //透明度,最小值为0,最大值为1
                float clarity = 0.9f;
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, clarity));
                //表示水印图片的坐标位置(x,y)
                g.drawImage(con, imgWidth - markWidth - 10, imgHeight - markHeight - 10, null);
                ByteArrayOutputStream bs = new ByteArrayOutputStream();
                ImageOutputStream imOut = ImageIO.createImageOutputStream(bs);
                ImageIO.write(bufImg, suffix.substring(1,suffix.length()), imOut);
                InputStream is = new ByteArrayInputStream(bs.toByteArray());
                return is;
            } catch (Exception e) {
                logger.error("图片水印失败!", e);
            }
            return inputImg;
        }
    }
    

     

    展开全文
  • 第一种方法:Graphics ,剧中显示水印,但是不会随着图片大小缩放,适应场景:大小一样的图片或者差不多的图片 /** * pressImg -- 水印文件 * targetImg -- 目标文件 */ public final static void pressImage...

    第一种方法:Graphics  ,剧中显示水印,但是不会随着图片大小缩放,适应场景:大小一样的图片或者差不多的图片

       /**
        *  watermarkImg-- 水印文件
        *  targetImg -- 目标文件
        */
        public final static void pressImage(String watermarkImg, String targetImg) {
            try {
                File  file = new File(targetImg);
                Image src = ImageIO.read(file);
                int wideth = src.getWidth(null);
                int height = src.getHeight(null);
                BufferedImage image = new BufferedImage(wideth, height,
                BufferedImage.TYPE_INT_RGB);
                Graphics  graphics = image.createGraphics();
                graphics.drawImage(src, 0, 0, wideth, height, null);
                File  fileWatermark = new File(watermarkImg);
                Image src_Watermark = ImageIO.read(fileWatermark );
                int wideth_Watermark = src_Watermark.getWidth(null);
                int height_Watermark = src_Watermark.getHeight(null);
                graphics.drawImage(src_Watermark, wideth - wideth_Watermark - ((wideth - wideth_Watermark)/2), height - height_Watermark -((height - height_Watermark)/2), wideth_Watermark,
                height_Watermark, null);//设置剧中印刷
                graphics.dispose();
                String formatName = targetImg.substring(targetImg.lastIndexOf(".") + 1);
                ImageIO.write(image, /*"GIF"*/ formatName /* format desired */ , new File(targetImg) /* target */ );
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    第二种:Thumbnails  会随着图片的大小缩放水印图片, bl会根据水印图片的大小变化,需要自己试验一下

     

    /**
        *watermarkImg-- 水印文件
        * targetImg -- 目标文件
        */
        public final static void pressImage(String watermarkImg, String targetImg, int x, int y) {
            try {
                File  file = new File(targetImg);
                Image src = ImageIO.read(file);
                int wideth = src.getWidth(null);
                int height = src.getHeight(null);
                BufferedImage image = new BufferedImage(wideth, height,BufferedImage.TYPE_INT_RGB);
                // 水印文件
                File fileWatermark = new File(watermarkImg);
                Image src_Watermark = ImageIO.read(fileWatermark);
                double bl = 0.2;
                if(wideth >=300 && wideth<400){
                     bl =0.5;//水印为原图宽高比例  px 300->400
                }else if(wideth >=400 && wideth<500){
                     bl =0.7;//水印为原图宽高比例  px 400->500
                }else if(wideth >=500 && wideth<600){
                     bl =0.9;//水印为原图宽高比例  px 500->600
                }else if(wideth >=600 && wideth<700){
                     bl =1;//水印为原图宽高比例  px 600->700
                }else if(wideth >=600 && wideth<700){
                     bl =1;//水印为原图宽高比例  px 700->800
                }else if(wideth >=700 && wideth<800){
                     bl =1.1;//水印为原图宽高比例  px 700->800
                }else if(wideth >=800){
                     bl =1.2;//水印为原图宽高比例  px 800->900
                }
                int widthOld  = (int) (src_Watermark .getWidth(null) * bl);
                int heightOld = widthOld * src_Watermark.getHeight(null) / src_Watermark.getWidth(null);
                //读取水印图
                //URL url = FileUnitTest.class.getResource();
                //生成新的水印图
                BufferedImage bufferedImage = Thumbnails.of(watermarkImg).size(widthOld,heightOld).keepAspectRatio(false).asBufferedImage();
                Thumbnails.of(_file).watermark(Positions.CENTER, bufferedImage, 1f).scale(1).toFile(targetImg);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    展开全文
  • java实现给图片添加水印

    千次阅读 2021-01-07 17:53:24
    2、我们要在原来的图片加水印,就相当于要在纸上画画。。。所以我们的画纸应该是原图的一的副本,我们我们需要得到副本并用容器容乃他, 3、画画需要画笔对吧,我们要得到画副本的笔,当然比肯定有粗细。。。参数...

    首先。涉及到文件就要用到文件操作,但我们这是操作图片
    1、我们首先需要一个容器来存放图片ps:图片原来在磁盘(File)—-》内存(image)
    2、我们要在原来的图片上加水印,就相当于要在纸上画画。。。所以我们的画纸应该是原图的一的副本,我们我们需要得到副本并用容器容乃他,
    3、画画需要画笔对吧,我们要得到画副本的笔,当然比肯定有粗细。。。参数设置。。
    4、如果就开始画了。。。首先的找位置。。。我们的图片就像桌面是二维图形,就用起始坐标,还是按部就班就从(0,0)开始呢

    5、然后万一我们想歇着画了呢,java有旋转画布的方法
    6、开始画画了。。。。给定位置。。。给定内容。。下笔了。。。
    7、花完了。。是不是就要收拾现场了。。。。收拾好笔,将内存的image输出到磁盘文件。。。。
    上代码

    package com.funi.test;
    
    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    
    /*******************************************************************************
     * Description: 图片水印工具类 
     * @author zengshunyao
     * @version 1.0
     */
    public class ImageRemarkUtil {
    
        // 水印透明度
        private static float alpha = 0.5f;
        // 水印横向位置
        private static int positionWidth = 150;
        // 水印纵向位置
        private static int positionHeight = 300;
        // 水印文字字体
        private static Font font = new Font("宋体", Font.BOLD, 72);
        // 水印文字颜色
        private static Color color = Color.red;
    
        /**
         * 
         * @param alpha
         *            水印透明度
         * @param positionWidth
         *            水印横向位置
         * @param positionHeight
         *            水印纵向位置
         * @param font
         *            水印文字字体
         * @param color
         *            水印文字颜色
         */
        public static void setImageMarkOptions(float alpha, int positionWidth,
                int positionHeight, Font font, Color color) {
            if (alpha != 0.0f)
                ImageRemarkUtil.alpha = alpha;
            if (positionWidth != 0)
                ImageRemarkUtil.positionWidth = positionWidth;
            if (positionHeight != 0)
                ImageRemarkUtil.positionHeight = positionHeight;
            if (font != null)
                ImageRemarkUtil.font = font;
            if (color != null)
                ImageRemarkUtil.color = color;
        }
    
        /**
         * 给图片添加水印图片
         * 
         * @param iconPath
         *            水印图片路径
         * @param srcImgPath
         *            源图片路径
         * @param targerPath
         *            目标图片路径
         */
        public static void markImageByIcon(String iconPath, String srcImgPath,
                String targerPath) {
            markImageByIcon(iconPath, srcImgPath, targerPath, null);
        }
    
        /**
         * 给图片添加水印图片、可设置水印图片旋转角度
         * 
         * @param iconPath
         *            水印图片路径
         * @param srcImgPath
         *            源图片路径
         * @param targerPath
         *            目标图片路径
         * @param degree
         *            水印图片旋转角度
         */
        public static void markImageByIcon(String iconPath, String srcImgPath,
                String targerPath, Integer degree) {
            OutputStream os = null;
            try {
    
                Image srcImg = ImageIO.read(new File(srcImgPath));
    
                BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
                        srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
    
                // 1、得到画笔对象
                Graphics2D g = buffImg.createGraphics();
    
                // 2、设置对线段的锯齿状边缘处理
                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                        RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    
                g.drawImage(
                        srcImg.getScaledInstance(srcImg.getWidth(null),
                                srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
                        null);
                // 3、设置水印旋转
                if (null != degree) {
                    g.rotate(Math.toRadians(degree),
                            (double) buffImg.getWidth() / 2,
                            (double) buffImg.getHeight() / 2);
                }
    
                // 4、水印图片的路径 水印图片一般为gif或者png的,这样可设置透明度
                ImageIcon imgIcon = new ImageIcon(iconPath);
    
                // 5、得到Image对象。
                Image img = imgIcon.getImage();
    
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                        alpha));
    
                // 6、水印图片的位置
                g.drawImage(img, positionWidth, positionHeight, null);
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
                // 7、释放资源
                g.dispose();
    
                // 8、生成图片
                os = new FileOutputStream(targerPath);
                ImageIO.write(buffImg, "JPG", os);
    
                System.out.println("图片完成添加水印图片");
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != os)
                        os.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 给图片添加水印文字
         * 
         * @param logoText
         *            水印文字
         * @param srcImgPath
         *            源图片路径
         * @param targerPath
         *            目标图片路径
         */
        public static void markImageByText(String logoText, String srcImgPath,
                String targerPath) {
            markImageByText(logoText, srcImgPath, targerPath, null);
        }
    
        /**
         * 给图片添加水印文字、可设置水印文字的旋转角度
         * 
         * @param logoText
         * @param srcImgPath
         * @param targerPath
         * @param degree
         */
        public static void markImageByText(String logoText, String srcImgPath,
                String targerPath, Integer degree) {
    
            InputStream is = null;
            OutputStream os = null;
            try {
                // 1、源图片
                Image srcImg = ImageIO.read(new File(srcImgPath));
                BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
                        srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
    
                // 2、得到画笔对象
                Graphics2D g = buffImg.createGraphics();
                // 3、设置对线段的锯齿状边缘处理
                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                        RenderingHints.VALUE_INTERPOLATION_BILINEAR);
                g.drawImage(
                        srcImg.getScaledInstance(srcImg.getWidth(null),
                                srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
                        null);
                // 4、设置水印旋转
                if (null != degree) {
                    g.rotate(Math.toRadians(degree),
                            (double) buffImg.getWidth() / 2,
                            (double) buffImg.getHeight() / 2);
                }
                // 5、设置水印文字颜色
                g.setColor(color);
                // 6、设置水印文字Font
                g.setFont(font);
                // 7、设置水印文字透明度
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                        alpha));
                // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
                g.drawString(logoText, positionWidth, positionHeight);
                // 9、释放资源
                g.dispose();
                // 10、生成图片
                os = new FileOutputStream(targerPath);
                ImageIO.write(buffImg, "JPG", os);
    
                System.out.println("图片完成添加水印文字");
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != is)
                        is.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                try {
                    if (null != os)
                        os.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            String srcImgPath = "d:/1.jpg";
            String logoText = "复 印 无 效";
            String iconPath = "d:/2.jpg";
    
            String targerTextPath = "d:/qie_text.jpg";
            String targerTextPath2 = "d:/qie_text_rotate.jpg";
    
            String targerIconPath = "d:/qie_icon.jpg";
            String targerIconPath2 = "d:/qie_icon_rotate.jpg";
    
            System.out.println("给图片添加水印文字开始...");
            // 给图片添加水印文字
            markImageByText(logoText, srcImgPath, targerTextPath);
            // 给图片添加水印文字,水印文字旋转-45
            markImageByText(logoText, srcImgPath, targerTextPath2, -45);
            System.out.println("给图片添加水印文字结束...");
    
            System.out.println("给图片添加水印图片开始...");
            setImageMarkOptions(0.3f, 1, 1, null, null);
            // 给图片添加水印图片
            markImageByIcon(iconPath, srcImgPath, targerIconPath);
            // 给图片添加水印图片,水印图片旋转-45
            markImageByIcon(iconPath, srcImgPath, targerIconPath2, -45);
            System.out.println("给图片添加水印图片结束...");
    
        }
    
    }
    展开全文
  • java 图片添加水印

    千次阅读 2021-06-15 15:09:21
    java 生成图片水印的两种方式 1:利用jdk自带工具类实现图片添加 文字或则图片水印,不依赖第三方组件 2:可以通过thumbnailator库 实现水印添加
  • java给图片加水印Demo,主要用到的函数:Graphics2D g2d = bufferedImage.createGraphics(); g2d.drawImage、g2d.setColor、g2d.setFont、g2d.drawString
  • echo $JAVA_HOME 如:/test/java/jdk1.8.0_261 2. JDK字体目录 cd /test/java/jdk1.8.0_261/jre/lib/fonts 然后将本地字体(一般在C:\Windows\Fonts下),找到需要字体上传到服务器fonts目录下 ...
  • * 给图片添加水印图片、可设置水印图片旋转角度 * * @param iconPath 水印图片路径 * @param srcImgPath 源图片路径 * @param location 水印图片位置 * @param degree 水印图片旋转角度 */ public
  • 开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我
  • Java工具类(10)—java给图片添加水印 1、工具类 package util; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io....
  • java实现给图片添加文字或图片水印

    千次阅读 2021-09-03 14:19:56
    import lombok.extern.slf4j.Slf4j; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*;...import java.awt.image.BufferedImage;...import java.io.File;...import java.io.OutputS
  • import com.sun.image.codec.jpeg.JPEGCodec;import ...import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import...
  • 1.情景展示如何使用java实现为图片添加水印的功能?2.导包使用jdk即可实现功能开发,不需要额外的jar包。import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java....
  • 主要介绍了Java实现给图片添加图片水印,文字水印及马赛克的方法,涉及java针对图片的读取、水印添加、马赛克设置等相关操作技巧,需要的朋友可以参考下
  • java处理图片拼接和添加水印,包含详细注解
  • 最近项目在做一个商城项目, 项目上的图片添加水印①,添加图片水印;②:添加文字水印;一下提供下个方法,希望大家可以用得着
  • Java图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->...
  • Java中对图片进行操作需要通过Image类,该类有一个实现类BufferedImage,通过BufferedImage我们可以获得当前缓存图片的画笔工具,对当前图片进行操作,比如将另一张图片放在当前图片加水印,或者在当前图片上加文字...
  • 添加文字水印的工具类,自己去下JAR包,MAVEN的网站http://mvnrepository.com/
  • import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.
  • 这个是我自己手写的,当然也结合一些网络上内容,很好用!如果需要代码讲解部分,可以去我这里下载讲解文档,有疑问的地方可以留言进行交流
  • java 给图片添加水印(MultipartFile )

    千次阅读 2020-04-21 10:01:39
    // 加水印 BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB); //获取 Graphics2D 对象 Graphics2D g = bufImg.createGraphics(); //设置绘图区域 g.drawImage...
  • 开发了在git上找了开源的图片验证码项目, 在本地已经测试OK了,如下: 万万没想到的是上传到Linux环境后,图片上的汉字就乱码了(变成了一个一个的正方形框) ........ 2.步骤 步骤一:检查linux系统里面的是否有中...
  • 主要为大家详细介绍了java实现图片加水印效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java给图片加水印

    2018-11-24 15:33:34
    1.加水印 Thumbnails.of("images/test.jpg").size(1280,1024).watermark(Positions.BOTTOM_RIGHT,ImageIO.read(newFile("images/watermark.png")), 0.5f).outputQuality(0.8f).toFile("C:/image_watermark_bottom...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,329
精华内容 4,131
关键字:

java给图片添加水印

java 订阅
友情链接: ytnr68.rar