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("生成完成");
}
}

  

java绘制带姓的圆的更多相关文章

  1. Turtle绘制带颜色和字体的图形(Python3)

    转载自https://blog.csdn.net/wumenglu1018/article/details/78184930 在Python中有很多编写图形程序的方法,一个简单的启动图形化程序设计的方 ...

  2. Java实现带logo的二维码

    Java实现带logo的二维码 二维码应用到生活的各个方面,会用代码实现二维码,我想一定是一项加分的技能.好了,我们来一起实现一下吧. 我们实现的二维码是基于QR Code的标准的,QR Code是由 ...

  3. JAVA实现带图片的列表——JList

    JList:显示对象列表并且允许用户选择一个或多个项的组件. JList的构造方法: 1.根据数组创建列表: JList(Object[] listData) 构造一个 JList,使其显示指定数组中 ...

  4. java自带工具-jps、jinfo、jstack、jstat、jmap

    掌握java自带的这些监控工具,有助与我们很好的分析问题和jvm性能调优秀.收集了些网上整理很好的文章. Java监控工具.调优.调试辅助函数 Java自带的GUI性能监控工具Jconsole以及Ji ...

  5. Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm

    一.本文的目的       Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggle ...

  6. CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  7. java自带BASE64工具进行图片和字符串转换

    java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  8. Java自带的keytool命令

    使用Java自带的keytool命令,在命令行生成. 1.生成服务器端私钥kserver.keystore文件 keytool -genkey -alias serverkey -validity 1 ...

  9. java发送带附件的邮件

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

随机推荐

  1. .iml文件恢复

    基于maven的java工程 执行 mvn idea:module可恢复.iml文件

  2. win cmd执行Python脚本提示找不到模块问题

    Windows关于命令行执行Python脚本,提示找不到模块的问题,我 本人也是在pycharm上运行没毛病的,后来在本地搞了个Jenkins做定时任务,谁知道就提示找不到模块 也百度了很多,都是说什 ...

  3. re模块的高级使用

    主要有四个方法: search : 从字符串的任意位置开始检索,首次匹配即结束 findall : 全部匹配 sub : 将正则匹配结果进行替换 split : 根据正则匹配结果将字符串进行切分,然后 ...

  4. visual studio 编译报错:未能向文件“....csproj.FileListAbsolute.txt”写入命令行,对路径的访问被拒绝

    在网上开始查找出错的解决方法,终于找到了,原来解决方法这么简单,当初以为是权限的问题,后来发现不是权限问题,在VSS中比以前多了两个目录“bin”和“obj”,可能是有人上传的时候将这两个文件夹一起上 ...

  5. 基于mpvue搭建小程序项目框架

    简介: mpvue框架对于从没有接触过小程序又要尝试小程序开发的人员来说,无疑是目前最好的选择.mpvue从底层支持 Vue.js 语法和构建工具体系,同时再结合相关UI组件库,便可以高效的实现小程序 ...

  6. Tomcat修改源码,重新编译

    源码和编译的区别:源码不能直接运行,是人读的,而编译后的程序是计算机可以读的.所以它们是不同的语言.

  7. C#用户自定义控件(含源代码)-透明文本框

    using System; using System.Collections; using System.ComponentModel; using System.Drawing; using Sys ...

  8. vue定义自定义事件方法、事件传值及事件对象

    1.自定义事件 例如v-on:click="run" 或者 @click="run" <template> <div id="app ...

  9. P1199三国游戏

    众所周知,三国题材的游戏很多,小涵遇到了其中之一 传送 这个题显然用贪心做,但是怎么贪心? 首先我们只知道计算机的策略,但我们不知道小涵的策略.所以我们要想小涵是怎么挑的. 计算机的策略是拆掉你每次选 ...

  10. 简单了解winform

    WinForm是·Net开发平台中对Windows Form的一种称谓. Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的窗体应用程序.可以访问数据库中的数据,并在窗体上显 ...