import javax.imageio.ImageIO; import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; /** * @author yaoyuanliang * @date 2018/1/19 */ public class FontImageUtil { public static byte[] generateImage(String name,int width,int height,String fontName,int size){ ByteArrayOutputStream out = new ByteArrayOutputStream(); try { // 创建BufferedImage对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取Graphics2D Graphics2D g2d = image.createGraphics(); // ---------- 增加下面的代码使得背景透明 ----------------- image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); g2d.dispose(); g2d = image.createGraphics(); // ---------- 背景透明代码结束 ----------------- // 画图 g2d.setColor(new Color(255,0,0)); g2d.setStroke(new BasicStroke(1)); FontRenderContext context = g2d.getFontRenderContext(); Font font= new Font(fontName,Font.BOLD,size); g2d.setFont(font); Rectangle2D bounds = font.getStringBounds(name, context); double x = (width - bounds.getWidth()) / 2; double y = (height - bounds.getHeight()) / 2; double ascent = -bounds.getY(); double baseY = y + ascent; //绘制字符串 g2d.drawString(name, (int)x+25, (int)baseY); //释放对象 g2d.dispose(); // 保存文件 ImageIO.write(image, "png",out); } catch (IOException e) { e.printStackTrace(); } return out.toByteArray(); } @Test public void test_19(){ try { String name="爱新觉"; int width=280; int height=120; String fontName="薛文轩钢笔楷体"; int size=66; byte[] bytes = FontImageUtil.generateImage(name, width, height, fontName, size); String dic = "D:\\12\\"; String ctime = System.currentTimeMillis()+""; File file = new File(dic+ctime+".png"); FileUtils.writeByteArrayToFile(file,bytes); } catch (IOException e) { e.printStackTrace(); } } }
生成文字图片
猜你喜欢
转载自mutourenoo.iteye.com/blog/2408308
今日推荐
周排行