//一般给图片加水印都不会使用原图直接加,都会自动生成另外一张图片
//一般我们设计的加水印的图都是jpg格式,png图片一般是自己设计的时候加水印
public static void main(String[] args) throws Exception {
//1.看一个图片是否被idea支持就读完看是否能获得它的宽和高
BufferedImage s = ImageIO.read(new File("image2.jpg"));//读取图片
int w = s.getWidth();
int h = s.getHeight();
//System.out.println(w+","+h); //能输出说明图片能用
Graphics2D g = s.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);
//设置字体属性
Color color = new Color(100,120,100);
g.setColor(color);
Font f = Font.createFont(Font.TRUETYPE_FONT,new File("fonts/font1.ttf")).deriveFont(Font.BOLD,200);
g.setFont(f);
//获取字体信息方便使用
String txt = String.format("%tF %<tT",System.currentTimeMillis());
txt = "永航小哥哥,加联系方式:123434343";
FontMetrics fm = g.getFontMetrics(f);
int ascent = fm.getAscent(); //获取的不是字体的高,是字体基线高度(基线就是大部分字体底部都在同一条的线)
int i1 = fm.stringWidth(txt); //获取当前写入的字体(多个)的宽度
int height = fm.getHeight(); //获得的是当前写入字体的高度
//右下角
int x = w - i1;
int y = h - height + ascent;
g.drawString(txt,x,y);
g.dispose();
ImageIO.write(s,"jpg",new File("image3.jpg"));
}
//一般我们使用加水印的方法,用的时候只需要传参数就行,(给一个输入图片,要添加的文字,和输出图片)
ImageIO给图片添加水印文字
最新推荐文章于 2023-04-01 18:06:22 发布