public class ImageGenerator { private static final Color[] colors = new Color[] { new Color(129, 198, 132), new Color(149, 117, 204), new Color(255, 187, 68), new Color(41, 181, 245), new Color(254, 138, 128), new Color(240, 98, 146) }; /** * 生成图片 int width = 100; int height = 100; * * @param name * @param width * @param height * @throws IOException */ public static InputStream generateImg(char ch) throws IOException { return generateImg(ch, 80, 80, 40); } /** * * @param ch * @param width * @param height * @throws IOException */ public static InputStream generateImg(char ch, int width, int height, int fontSize) throws IOException { BufferedImage bufferedImage = generateBufferedImage(ch, width, height, fontSize); ByteArrayOutputStream bs = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "png", bs); InputStream is = new ByteArrayInputStream(bs.toByteArray()); return is; } /** * * @param ch * @param width * @param height * @throws IOException */ public static BufferedImage generateBufferedImage(char ch, int width, int height, int fontSize) throws IOException { Font font = new Font("黑体", Font.PLAIN, fontSize); BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) bufferedImage.createGraphics(); // 增加下面代码使得背景透明 bufferedImage = g2.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); g2.dispose(); g2 = bufferedImage.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); // g2.setBackground(getRandomColor()); // g2.clearRect(0, 0, width, height); g2.setFont(font); g2.drawOval(0, 0, width, height); g2.setPaint(getRandomColor()); g2.fillOval(0, 0, width, height); g2.setPaint(Color.white); FontMetrics fm = sun.font.FontDesignMetrics.getMetrics(font); int w = fm.charWidth(ch); int h = fm.getAscent(); g2.drawString((ch + "").toUpperCase(), (width - w) / 2, h + (height - h) / 2 - (fm.getHeight() - h) / 2); g2.dispose(); return bufferedImage; } public static Color getRandomColor() { Random r = new Random(); return colors[r.nextInt(colors.length)]; } public static void main(String[] args) { File imgFile = new File("D:/1111111111111111.png"); File imgFile2 = new File("D:/11111111111111cdscsdcsdcsdcsdc11.png"); try { IOUtils.copy(ImageGenerator.generateImg('何'), new FileOutputStream(imgFile)); ImageIO.write(ImageGenerator.generateBufferedImage('A', 100, 100, 50), "png", imgFile2); } catch (IOException e) { e.printStackTrace(); } System.out.println("生成完成"); } }