添加水印并控制位置

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

       Random rand =new Random();
        String name = "d:/Auser/2.png";
        BufferedImage bar = ImageIO.read(new File(name));
        //图像的宽高
        int w = bar.getWidth();
        int h = bar.getHeight();
        Graphics2D g =bar.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        //写字
        g.setColor(new Color(255,0,0,100));//透明色
        Font font =new Font("宋体",Font.BOLD,60);
        //Font font =Font.createFont(Font.TYPE1_FONT,new File("zt/aa.ttf"));
        font =font.deriveFont(110f);//字体大小
        font = font.deriveFont(Font.BOLD);
        g.setFont(font);

        String text ="你说你呢,什么";
        //计算字体宽高
        FontMetrics fm = g.getFontMetrics(font);//获取字体度量
        int th = fm.stringWidth(text);//定义宽,获取高
        int tw = fm.getHeight();
        System.out.println(th);
        System.out.println(tw);

        int x=200;//坐标
        int y=100;

        //左上角
        x=10;y=th-700;
        //正中央
        x=500;y=th-200;
        //右下角
        x=1100;y=th+200;

        //随机位置
//        x=rand.nextInt(w-110)+110;y=rand.nextInt(h-th-60)+th+60;

        g.drawString(text,x,y);
        g.dispose();

        String n1 = name.substring(0,name.lastIndexOf("."));//从零开始节到最后一个点,不包含点
        String n2 = name.substring(name.lastIndexOf("."));//从最后一个点截出来
        String nn =n1 +"_text"+n2;//(123_text.jpg)
        ImageIO.write(bar,"png",new File(nn));//改完后是原名的话就会覆盖

        //执行完打开
        Runtime run =Runtime.getRuntime();
        run.exec("cmd /k start "+ nn);
    }

 修改版

 public static void main(String[] args) throws Exception {
            Random rand = new Random();
            String name = "d:/Auser/2.png";
            BufferedImage bar = ImageIO.read(new File(name));
            int w = bar.getWidth();
            int h = bar.getHeight();
            Graphics2D g = bar.createGraphics();
            g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);

            g.setColor(new Color(255, 0, 0, 180));

//            Font font = Font.createFont(Font.TRUETYPE_FONT, new File("user/zh24hzhss.ttf"));
            Font font =new Font("宋体",Font.BOLD,60);
            font = font.deriveFont(50f);
            font = font.deriveFont(Font.BOLD);
            g.setFont(font);

            String text = "版权所有-严禁复制";
            FontMetrics fm = g.getFontMetrics(font);
            int tw = fm.stringWidth(text);
            int th = fm.getHeight();
            System.out.println(tw);//字体所占的位置
            System.out.println(th);


            int x = 30;
            int y = 150;

            //左上角
            x=30;y=th+20;
            //正中央
            x=(int)((w-tw)/2.0);y=(int)((h-th)/2.0);
            //右下角
            //x=w-30-tw;y=h-30;

            //随机位置
//            x=rand.nextInt(w-30-tw)+30;y=rand.nextInt(h-th-10)+th+10;
            g.drawString(text, x, y);

            g.dispose();

            String n1 = name.substring(0, name.lastIndexOf("."));
            String n2 = name.substring(name.lastIndexOf("."));
            String nn = n1 + "_text" + n2;
            ImageIO.write(bar, "png", new File(nn));

            Runtime run = Runtime.getRuntime();
            run.exec("cmd /k start " + nn);

        }

 

posted @ 2021-01-23 14:44  谷先生  阅读(220)  评论(0)    收藏  举报