添加水印并控制位置
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); }
浙公网安备 33010602011771号