在原有的Image中增加文字
不多说直接上代码
//测试方法
public static void main(String[] args){
//打印系统字体
Font[] fonts = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getAllFonts();
for (Font font : fonts) {
System.out.println(font.getFontName());
}
//原图片地址
String filePath = "C:\\Users\\Administrator\\Desktop\\2.jpg";
//生成文件地址
String outFile = "C:\\Users\\Administrator\\Desktop\\3.jpg";
//需要在图片上显示的文字
String text = "哎呀我滴天呢";
//字体颜色 R G B
Color color = new Color(0,0,0);
//字体样式,字体大小
Font font = new Font("黑体",2,64);
//X 轴
int x = 681;
//Y 轴
int y = 1100;
waterMark(filePath,outFile,text,color,font,x,y);
}
/**
* @param filePath 原图片
* @param outFile 输出图片
* @param text 水印文字
* @param color 颜色
* @param font 字体
* @param x 水印起始X坐标
* @param y 水印起始Y坐标
* @return 添加水印是否成功 true-成功 false-失败
*/
public static boolean waterMark(String filePath, String outFile,
String text, Color color, Font font, int x, int y) {
String result = "打水印失败!";
FileInputStream fis = null;
try {
fis = new FileInputStream(filePath);
BufferedImage im = ImageIO.read(fis);//读取原图片
int width = im.getWidth();//原图片宽
int height = im.getHeight();//原图片高
//判断水印起始x和y坐标是否小于原图片宽和高
if (x > width || y > height) {
System.out.println(result);
return false;
}
Graphics g = im.getGraphics();//创建画板
g.setColor(color);//设置颜色
g.setFont(font);//设置文字样式
g.drawString(text, x, y);//向画板上写字
g.dispose();//释放资源
ImageIO.write(im, "jpg", new File(outFile));
} catch (IOException e) {
System.out.println(result);
return false;
} finally {
closeFileInputStream(fis);
}
result = "打水印成功!";
System.out.println(result);
return true;
}
/**
* 关闭文件输入流
* @param fis
*/
public static void closeFileInputStream (FileInputStream fis){
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}