java 图片中加文字
第一个参数是需要更改的图片文件路径,word是需要加入的文字,targetPath是重新生成的文件存放地址,
正常文件生成时需要上传文件服务器,所以返回的是生成的文件新路径,上传文件服务器之后记得删除生成的文件,
BufferedImage是JDK中自带的包,但是打包时会报错,所以使用 ImageIO,但是要注意图片格式,不要弄错,否则会读不出来
public static String addFont(String filePath,String word,String targetPath){
try{
File file = new File(filePath);
if(!file.exists()){
return "";
}
InputStream is = new FileInputStream(filePath);
//BufferedImage bi = ImageIO.read(is);
//通过JPEG图象流创建JPEG数据流解码器
//JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(is);
//解码当前JPEG数据流,返回BufferedImage对象
//BufferedImage buffImg = jpegDecoder.decodeAsBufferedImage();
BufferedImage buffImg = ImageIO.read(is);
//得到画笔对象
Graphics g = buffImg.getGraphics();
//设置文字颜色。
g.setColor(Color.WHITE);
//最后一个参数用来设置字体的大小
Font f = new Font("微软雅黑",Font.PLAIN,120);
g.setFont(f);
//60,160 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。
g.drawString(word,60,160);
g.dispose();
OutputStream os;
targetPath = targetPath + System.currentTimeMillis() + ".jpg";
File file1 = new File(targetPath);
if(!file1.exists()){
file1.createNewFile();
}
os = new FileOutputStream(targetPath);
ImageIO.write(buffImg, "jpg", os);
//en.encode(buffImg);
is.close();
os.close();
}catch (Exception e){
e.printStackTrace();
}
return targetPath;
}