Java练习题目1:给图片加上水印文字

思路:

1.获取图片文件 路径、输出路径
2.设定水印文字格式:字体类型(例如宋体、仿宋、Times New Roman等)、字体风格(例如斜体字、加粗等)、以及字号大小
3.加水印 BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g =
bufImg.createGraphics(); g.drawImage(srcImg, 0, 0, srcImgWidth,
srcImgHeight, null); g.setColor(markContentColor); // 根据图片的背景设置水印颜色
g.setFont(font); // 设置字体
4.输出图片文件

代码:

package practive100;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;

public class ImageFont {

	public void addWaterMark(String srcImgPath, String tarImgPath, String waterMarkContent, Color markContentColor,
			Font font) {
		try {
			// 读取原图片信息
			File srcImgFile = new File(srcImgPath);// 得到文件
			Image srcImg = ImageIO.read(srcImgFile);// 文件转化为图片
			int srcImgWidth = srcImg.getWidth(null);// 获取图片的宽
			int srcImgHeight = srcImg.getHeight(null);// 获取图片的高度

			// 加水印
			BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
			Graphics2D g = bufImg.createGraphics();
			g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
			g.setColor(markContentColor); // 根据图片的背景设置水印颜色
			g.setFont(font); // 设置字体

			// 设置水印的坐标
			/*
			 * int x = srcImgWidth - 2 * getWatermarkLength(waterMarkContent, g); int y =
			 * srcImgHeight - 2 * getWatermarkLength(waterMarkContent, g);
			 */
			g.drawString(waterMarkContent, 0, 40);
			g.dispose();

			// 输出图片tarImgPath
			FileOutputStream outImgStream = new FileOutputStream(tarImgPath);
			ImageIO.write(bufImg, "jpg", outImgStream);
			System.out.println("添加水印完成");
			outImgStream.flush();
			outImgStream.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

	// 用于计算水印文字放在中间位置
//	public int getWatermarkLength(String waterMarkContent, Graphics2D g) {
//		return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());
//	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Font font = new Font("微软雅黑", Font.PLAIN, 40);// 水印字体
		String srcImgPath = "C:/pic/aa.jpg";// 源图片地址
		String tarImgPath = "C:/pic/bb.jpg";// 添加上水印后地址
		String waterMarkContent = "图片来源:精神小伙大哥哥";// 水印内容
		Color color = new Color(255, 255, 255, 128);// 水印图片色彩,以及透明度

		new ImageFont().addWaterMark(srcImgPath, tarImgPath, waterMarkContent, color, font);

	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值