栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现图片平铺倾斜水印效果

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现图片平铺倾斜水印效果

效果图:

public static void addWaterMark(File inputFile, File outputFile, String text) throws IOException {
		Image image = ImageIO.read(inputFile);
		int imgWidth = image.getWidth(null);// 获取图片的宽
		int imgHeight = image.getHeight(null);// 获取图片的高

		int angel = 315;//旋转角度
		int xpadding = 40;//每个水印水平间隔
		int ypadding = 40;//每个水印垂直间隔
		int fontSize = 10;

		BufferedImage bi = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_ARGB);

		Graphics2D g = bi.createGraphics();
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

		//绘制原图片
		float alpha = 1F;
		AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
		g.setComposite(ac);
		g.drawImage(image, 0, 0, imgWidth, imgHeight, null);
		g.setBackground(Color.BLACK);
		
		//开始绘制水印
		//水印字体
		Font font = new Font("微软雅黑", Font.BOLD, fontSize);
		g.setFont(font);
		FontRenderContext frc = g.getFontRenderContext();
		TextLayout tl = new TextLayout(text, font, frc);
		//水印串宽度
		int stringWidth = g.getFontMetrics(g.getFont()).charsWidth(text.toCharArray(), 0, text.length());

		//旋转水印
		g.rotate(Math.toRadians(angel), (double) imgWidth / 2, (double) imgHeight / 2);
		//水印透明度
		g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5F));
		// 字体色
		g.setColor(Color.RED);
		
		int x = -imgHeight / 2; 
		int y = -imgWidth / 2;
		
		//循环绘制
		while (x < imgWidth + imgHeight / 2) {
			y = -imgWidth / 2;
			while (y < imgHeight + imgWidth / 2) {
				Shape sha = tl.getOutline(AffineTransform.getTranslateInstance(x, y));
				g.fill(sha);
				
				y += ypadding;
			}
			x += stringWidth + xpadding;
		}
		
		//释放资源
		g.dispose();
		ImageIO.write(bi, "PNG", outputFile);
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号