原图(工程所在目录7098849.jpg):

  头像(工程所在目录20181023201750.jpg):

  开始合成(执行如下main方法):

    public static void main(String[] args) throws IOException
{
String rootPath = System.getProperty("user.dir");
String imageUrl = rootPath + File.separator + "7098849.jpg";
String headUrl = rootPath + File.separator + "20181023201750.jpg";
String newImageUrl = rootPath + File.separator + "20181023.jpg";
composePic(newImageUrl,imageUrl,headUrl);
}
    /**
* 合成照片
*
* @author wulinfeng
* @param newImageUrl
* @param imageUrl
* @param headUrl
*/
private static void composePic(String newImageUrl, String imageUrl, String headUrl)
{
String nickName = "不想下火车的人"; // 昵称
String color = "230,206,145"; // 昵称颜色
String font = "思源黑体 CN Normal,1,34"; // 昵称字体
String pos = "156,70"; // 昵称位置
String headimg_pos = "40,40"; // 头像位置
String headimg_size = "88,88"; // 头像大小 BufferedImage srcImg = null;
BufferedImage headImg = null;
try
{
srcImg = ImageIO.read(new File(imageUrl));
headImg = ImageIO.read(new File(headUrl));
}
catch (IOException e)
{
e.printStackTrace();
} if (srcImg == null || headImg == null)
{
return;
} Graphics2D g = srcImg.createGraphics(); String[] colorArray = color.split(",");
g.setColor(new Color(Integer.parseInt(colorArray[0]), Integer.parseInt(colorArray[1]),
Integer.parseInt(colorArray[2])));
String[] fontArray = font.split(",");
g.setFont(new Font(fontArray[0], Integer.parseInt(fontArray[1]), Integer.parseInt(fontArray[2])));
String[] posArray = pos.split(",");
g.drawString(nickName, Integer.parseInt(posArray[0]), Integer.parseInt(posArray[1])); String[] headposArray = headimg_pos.split(",");
String[] headsizeArray = headimg_size.split(",");
g.drawImage(headImg,
Integer.parseInt(headposArray[0]),
Integer.parseInt(headposArray[1]),
Integer.parseInt(headsizeArray[0]),
Integer.parseInt(headsizeArray[1]),
null);
g.dispose(); try
{
FileOutputStream outImgStream = new FileOutputStream(newImageUrl);
ImageIO.write(srcImg, "jpg", outImgStream);
outImgStream.flush();
outImgStream.close();
}
catch (IOException e)
{
e.printStackTrace();
} }

  合成结果(工程所在目录20181023.jpg):

使用JDK合成照片的更多相关文章

  1. 利用开源软件 Hugin 实现照片的景深合成

    利用开源软件 Hugin 实现照片的景深合成 本文主要参考了下面的文章:http://macrocam.blogspot.jp/2013/09/using-hugin-for-focus-stacki ...

  2. Java程序员必备英文单词

    列表中共有769个单词,这些单词是从JDK.Spring.SpringBoot.Mybatis的源码中解析得到,按照在源码中出现的频次依次排列,页面中的单词是出现频次大于1000的.单词的音标.翻译结 ...

  3. H5拍照应用开发经历的那些坑儿

    一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...

  4. 让自己也能使用Canvas

    <canvas> 是 HTML5 新增的元素,可使用JavaScript脚本来绘制图形.例如:画图,合成照片,创建动画甚至实时视频处理与渲染. 兼容性方面,除了一些骨灰级浏览器IE6.IE ...

  5. H5移动端页面设计心得分享

    去年JDC出了不少优秀的武媚娘…不,H5呢,大家都很拼,同时当然也积累了一些经验和教训,今天结合咱们的实战案例,从字体,排版,动效,音效,适配性,想法这几个方面好好聊一聊关于H5的设计,希望对同学们有 ...

  6. paper 97:异质人脸识别进展的资讯

    高新波教授团队异质人脸图像识别研究取得新突破,有望大大降低刑侦过程人力耗费并提高办案效率         近日,西安电子科技大学高新波教授带领的研究团队,在异质人脸图像识别研究领域取得重要进展,其对香 ...

  7. (转)价值240万的photoshop中文教程,错过了后悔都来不及 (吹得好响)

      PS抠图方法 一.魔术棒法——最直观的方法 适用范围:图像和背景色色差明显,背景色单一,图像边界清晰. 方法意图:通过删除背景色来获取图像. 方法缺陷:对散乱的毛发没有用. 使用方法:1.点击“魔 ...

  8. webrtc学习———记录二:canvas学习

    参考资料: http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html#getcontext2d https://developer.m ...

  9. scriptol图像处理算法

    神奇的图像处理算法   相似图片搜索是利用数学算法,进行高难度图像处理的一个例子.事实上,图像处理的数学算法,已经发展到令人叹为观止的地步. Scriptol列出了几种神奇的图像处理算法,让我们一起来 ...

随机推荐

  1. C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 04)

    -------------------- interface 接口 // 定义: type IHumaner interface { SayHi() // 接口中只能是方法声明,没有实现,没有数据字段 ...

  2. 为红米Note 5 Pro编译Lineage OS 15.1的各种坑

    安装了ubuntu虚拟机,直接上网repo sync,网速特别慢,中间断了好多次,记得是3天吧,总算是下载成功了.中途还在淘宝上买过付费的VPN代理软件,有时候会打开代理来尝试,也是不太稳定.好歹第1 ...

  3. 字符串方法之-indexOf、lastIndexOf、等等一些方法

    1.indexOf():方法可返回某个指定的字符串值在字符串中首次出现的位置(从左往右找). 语法:stringObject.indexOf(searchvalue,fromindex) <sc ...

  4. IOS加载PDF文件

    今天的任务是:在iOS上加载显示pdf文件. 方法一:利用webview -(void)loadDocument:(NSString *)documentName inView:(UIWebView  ...

  5. day28 CRM万能权限组件开发 && 主机管理-堡垒机

    1,CRM项目实战-万能权限组件开发参考博客:http://www.cnblogs.com/alex3714/articles/6661911.html 参考代码:https://github.com ...

  6. HDU 5831 Rikka with Parenthesis II (贪心)

    Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. ubuntu下编译neovim

    # 安装编译依赖 sudo apt-get install libtool libtool-bin autoconf automake cmake g++ pkg-config unzip -y # ...

  8. shell脚本实例一

    一. 什么是shell 脚本时一种解释性语言: shell脚本保存执行动作: 脚本判定命令的执行条件 脚本来实现动作的批量执行.二.如何创建 vim  test.sh     ##shell脚本一般都 ...

  9. React之组件

    鉴于个人的开发习惯,我将react默认的文件结构作了如下修改: 我们的项目是写在src目录下的. 那么,接下来,继续看react的组件式如何编写的吧. 一.react的组件 不同于vue的每个组件都是 ...

  10. ubuntu16 tomcat7安装和编码修改

    有直接通过命令安装的,但是我还是喜欢把文件下载下来,然后自己配置. 1,下载tomcat7二进制文件 https://tomcat.apache.org/download-70.cgi 2,解压tom ...