由于工作需要做了一个利用java的Graphics2D进行图片合成且在图片上写入自定义字体文字的小功能,
那就顺便记录一些痕迹,有什么不好的地方请见谅
public static void main(String[] args){try {//创建画布
        BufferedImage image = new BufferedImage(480,270,BufferedImage.TYPE_INT_RGB);//背景图(使用网络链接获取)
        BufferedImage background = ImageIO.read(new URL("http://.../background.png"));//头像(使用本地路径获取)
        BufferedImage icon = ImageIO.read(new File("C:\\...\Desktop\\doctor.png"));//字体背景图
        BufferedImage fontBd = ImageIO.read(new URL("http://.../fontBd.png"));//开启画图
        Graphics2D graphics = image.createGraphics();//把背景图、头像添加到画布中
        graphics.drawImage(background.getScaledInstance(480,270,Image.SCALE_DEFAULT),0,0,null);graphics.drawImage(icon.getScaledInstance(180,227,Image.SCALE_DEFAULT),283,42,null);//写入标题,标题引入自定义字体
        Font font = FontUtils.getFont(1,40);graphics.setColor(Color.decode("#333333"));graphics.setFont(font);FontUtils.drawString("论标题的重要性",20,105,6,graphics,40);//将字符串按照自定义的间隔写入,防止字体全部写在同一个地方
        //添加字体背景
        graphics.drawImage(fontBd.getScaledInstance(doctorMessage.length()*17,35,Image.SCALE_DEFAULT),20,136,null); //写入信息
        graphics.setFont(new Font("微软雅黑", Font.BOLD, 17)); graphics.setColor(Color.white); graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); //去字体锐化
        graphics.drawString("陌陌 特级医师", 32, 159); //写入信息
        graphics.setFont(new Font("微软雅黑", Font.PLAIN, 17)); graphics.setColor(Color.decode("#333333")); graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); graphics.drawString("中南第二医院 内外科", 20, 199); //关闭画布创作
        graphics.dispose();//根据画布内容生成图片
        ImageIO.write(image, "png", new File("C:\\.....\\Desktop\\j.png")); System.out.println("图片生成完毕"); } catch (Exception ex) { System.out.println("error: "+ex.getMessage()); ex.printStackTrace(); } }
/**
 *  引入自定义的字体
 * @param fontStyle 字体样式
 * @param fontSize  字体大小
 * @return
 */
public static Font getFont(int fontStyle, float fontSize) {Font font = null;FileInputStream fileInputStream = null;String fontUrl = "";try {switch (fontStyle) {case 1://文悦新青年体
                fontUrl = "C:\\...\\Desktop\\youth.OTF";break;default:fontUrl = "C:\\...\\Desktop\\vagrom.otf";break;}fileInputStream = new FileInputStream(new File(fontUrl));Font tempFont = Font.createFont(Font.TRUETYPE_FONT,fileInputStream);font = tempFont.deriveFont(fontSize);GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();} catch (Exception e) {e.printStackTrace();} finally {try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}return font;
}
/**
 * 将字符串按照自定义的间隔写入
 * @param str   目标字符串
 * @param x     写入的位置的x * @param y     写入的位置的y * @param rate  写入间隔
 * @param g     画布
 * @param fontSize  字体的大小
 */
public static void drawString(String str,int x,int y,int rate, Graphics2D g,int fontSize){String tempStr="";int tempx=x;int tempy=y;while (str.length()>0){tempStr=str.substring(0, 1);str=str.substring(1, str.length());g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);g.drawString(tempStr, tempx, tempy);tempx = tempx + fontSize - rate;}
}

效果图:

java进行图片合成以及写入自定义字体相关推荐

  1. Java图片合成并引入外部字体写入文字

    业务需要将两个图片合成,并按指定字体写入标语以及用户的经纬度,代码如下: import cn.hutool.core.img.GraphicsUtil;import javax.imageio.Ima ...

  2. java 处理图片图片合成

    最近写了一个java的图片合成相关的项目,真的是一踩一个坑,下面博主说说遇见的一些坑和怎么解决的这些问题. 本文主要讲图片合成,加文字还是比较简单的. 先讲下我的需求,把一张图片盖到另外一张图片上面, ...

  3. JAVA操作图片/合成/电子盖章等

    JAVA操作图片/合成/电子盖章等 /**** @param mainFile* @param file1* @param f 透明度 最大为1* @param response* @return* ...

  4. Java 实现图片合成

    2019独角兽企业重金招聘Python工程师标准>>> 图片合成 利用Java的绘图方法,实现图片合成 在开始之前,先定一个小目标,我们希望通过图片合成的方式,创建一个类似下面样式的 ...

  5. java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距

    工具类 java操作图片,给一个大图片贴小图片,给图片添加文字并调整文字颜色,大小,字体间距,把本地图片或者网络图片加载到缓冲区 主要方法: imageIoRead方法,把图片加载到缓冲区 merge ...

  6. linux centos java kumo图片合成文字 词云插件 字体乱码问题

    linux下安装微软雅黑字体库 或者其他字体 jieba 词云 kumo相关 百度随便找个ttf安装就行 用winscp直接切目录 /usr/share/fonts/ 放入*.ttf字体文件 先看看f ...

  7. Java实现图片合成

    功能 竖向合成多张大小不一致的图片,以最宽图片的为宽为合成后的宽度, 高为所有图片的总高度.图片宽度没有达到合成的宽度则填充部分使用白色画布填充. 代码 /*** 多张图片进行竖向合并成一张图片* @ ...

  8. java实现图片合成gif图——输出到具体路径或流数据上传

    一.多图片转gif 转存到输出流 /*** 多图片转gif 转存到输出流** @param imageList* @param os* @throws IOException*/private sta ...

  9. JAVA 由图片合成gif文件

    1.需要四个类,直接应用到项目中,不需要做太多改动,除了导包: 2.jpgToGif函数需要传入两个参数,第一个参数为要合成的图片路径数组,第二个参数为合成的GIF图片将存在的路径. 例如: 第一个参 ...

最新文章

  1. Deep Learning 学习随记(三)续 Softmax regression练习
  2. 宏基因组分析实战教程1. 背景知识
  3. linux 下 Nginx 0.8.40的安装
  4. mysql执行出错:Table 'k_user' is read only
  5. 超级强大的心理定律~~!你可以变成你想要的样子!~
  6. .NET 开源配置组件 AgileConfig 初体验
  7. 《SAS编程与数据挖掘商业案例》学习笔记之十六
  8. 【CodeForces - 798A】Mike and palindrome (回文串,水题,字符串问题)
  9. 常用个人密码管理软件 .
  10. java高级考试题_JAVA高级考试题
  11. 1999元的AirPods Pro无线耳机突然发布,史上最大升级,买不买?
  12. linux下添加磁盘
  13. 玩转你画我猜(二):更优秀的绘图程序
  14. python基础--字典
  15. BURP安装Turbo Intruder插件报错问题
  16. 计算机黑屏但是有鼠标,电脑黑屏有鼠标箭头怎么办
  17. 笔记本电脑触摸板操作
  18. css两列等高,多种方法实现div两列等高(收集整理)
  19. 网络传输粘包解包处理
  20. Java总结13 Lambda表达式 和 方法引用 的概念与应用

热门文章

  1. 计算机开机引导过程的结果是,计算机开机的引导过程是怎么样的,学会了能解决大部分的开机问题...
  2. 惠普打印机双击之后没有扫描_Win7安装打印机后无法安装扫描仪或安装后没有扫描选项如何解决...
  3. Windows电脑清理Windows.edb文件,释放C盘空间
  4. 职业经理人生涯规划设计实务
  5. 搜索不包含关键词_秘迹搜索——不记录关键词、不追踪、过滤广告的搜索引擎...
  6. android+开发最新技巧,android开发小技巧
  7. Vivado使用心得(一)Vivado IP的两种综合方式:Global 和 Out-Of-Context
  8. 蒜术师给了你一组样本数据,请帮助他计算这组数据的均值。
  9. 全球及中国能源期货行业市场现状及未来前瞻报告2022-2028年
  10. uniapp打包静态资源优化