JAVA 图片添加内容

时间:2024-11-15 12:10:47
/** * 给图片添加文字内容 * @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()); } }