JAVA 图片添加内容
/**
* 给图片添加文字内容
* @param filePath 原图路径
* @param markContent 文字内容
* @param outPath 添加文字内容的图片存放路径地址
* @param flag 可以根据flag值,给图片设置具体值
*/
public static void createStringMark(String filePath,String markContent,String outPath,Integer flag) {
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
int width = theImg.getWidth(null) == -1 ? 200 : theImg.getWidth(null);
int height = theImg.getHeight(null) == -1 ? 200 : theImg.getHeight(null);
// .println(width);
// .println(height);
// .println(theImg);
BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// RGB形式
Graphics2D g = bimage.createGraphics();
Color mycolor = ; // 颜色
g.setColor(mycolor);
g.setBackground();// 设置背景色
g.drawImage(theImg, 0, 0, null);// 参数一:image是要加载的图像;参数二,三:x,y是指定绘制图像矩形左上角的位置;参数四:observer是要绘制图像的容器,一般此参数默认为null
/* 设置抗锯齿 消文字锯齿:RenderingHints.KEY_TEXT_ANTIALIASING
* 消绘图锯齿:RenderingHints.KEY_ANTIALIASING
* 字体圆滑: RenderingHints.VALUE_TEXT_ANTIALIAS_ON
*/
switch (flag){
case 0:
// g.setFont(new .Font("黑体", , 24)); // 字体、字型、字号
// g.drawString(markContent, 1, 39); // 画文字 文字在1宽度,39高度
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);// 设置抗锯齿
g.setFont(new .Font("黑体", , 24)); // 字体、字型、字号
g.setPaint(new Color(0, 0, 0, 64));// 阴影颜色
g.drawString(markContent, 1, 39);// 先绘制阴影
g.setPaint();// 正文颜色
g.drawString(markContent, 1, 39);// 用正文颜色覆盖上去
break;
case 1:
// g.setFont(new .Font("黑体", , 16)); // 字体、字型、字号
// g.drawString(markContent, 1, 17); // 画文字 文字在1宽度,17高度
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);// 设置抗锯齿
g.setFont(new .Font("黑体", , 16)); // 字体、字型、字号
g.setPaint(new Color(0, 0, 0, 64));// 阴影颜色
g.drawString(markContent, 1, 17);// 先绘制阴影
g.setPaint();// 正文颜色
g.drawString(markContent, 1, 17);// 用正文颜色覆盖上去
break;
default:
g.setFont(new .Font("黑体", , 1)); // 字体、字型、字号
g.drawString(markContent, 1, 1); // 画文字 文字在1宽度,1高度
break;
}
g.dispose();
try {
FileOutputStream out = new FileOutputStream(outPath); // 一个特定的输出文件名
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(100, false); // 进行高质量图片缩放
encoder.encode(bimage, param);
out.close();
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException(e.getMessage());
}
}