使用JDK合成照片
原图(工程所在目录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合成照片的更多相关文章
- 利用开源软件 Hugin 实现照片的景深合成
利用开源软件 Hugin 实现照片的景深合成 本文主要参考了下面的文章:http://macrocam.blogspot.jp/2013/09/using-hugin-for-focus-stacki ...
- Java程序员必备英文单词
列表中共有769个单词,这些单词是从JDK.Spring.SpringBoot.Mybatis的源码中解析得到,按照在源码中出现的频次依次排列,页面中的单词是出现频次大于1000的.单词的音标.翻译结 ...
- H5拍照应用开发经历的那些坑儿
一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...
- 让自己也能使用Canvas
<canvas> 是 HTML5 新增的元素,可使用JavaScript脚本来绘制图形.例如:画图,合成照片,创建动画甚至实时视频处理与渲染. 兼容性方面,除了一些骨灰级浏览器IE6.IE ...
- H5移动端页面设计心得分享
去年JDC出了不少优秀的武媚娘…不,H5呢,大家都很拼,同时当然也积累了一些经验和教训,今天结合咱们的实战案例,从字体,排版,动效,音效,适配性,想法这几个方面好好聊一聊关于H5的设计,希望对同学们有 ...
- paper 97:异质人脸识别进展的资讯
高新波教授团队异质人脸图像识别研究取得新突破,有望大大降低刑侦过程人力耗费并提高办案效率 近日,西安电子科技大学高新波教授带领的研究团队,在异质人脸图像识别研究领域取得重要进展,其对香 ...
- (转)价值240万的photoshop中文教程,错过了后悔都来不及 (吹得好响)
PS抠图方法 一.魔术棒法——最直观的方法 适用范围:图像和背景色色差明显,背景色单一,图像边界清晰. 方法意图:通过删除背景色来获取图像. 方法缺陷:对散乱的毛发没有用. 使用方法:1.点击“魔 ...
- webrtc学习———记录二:canvas学习
参考资料: http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html#getcontext2d https://developer.m ...
- scriptol图像处理算法
神奇的图像处理算法 相似图片搜索是利用数学算法,进行高难度图像处理的一个例子.事实上,图像处理的数学算法,已经发展到令人叹为观止的地步. Scriptol列出了几种神奇的图像处理算法,让我们一起来 ...
随机推荐
- Gruntjs提高生产力(一)
gruntjs是一个基于nodejs的自动化工具,只要熟悉nodejs或者又一定js经验就可以熟练应用. 1. 安装 a. 保证已安装了nodejs,并带有npm b.安装客户端命令行工具,grunt ...
- Highcharts 动态图
Highcharts 动态图 每秒更新曲线图 chart.events chart.event 属性中添加 load 方法(图表加载事件).在 1000 毫秒内随机产生数据点并生成图表. chart: ...
- Where do I belong
先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引. 举例:where([1,2,3,4], 1.5) 应该返回 1.因为1.5插入到数组[1,2,3,4]后变成[1,1.5,2,3, ...
- ping函数
#!/bin/bash #note:ping monitor set -u #set -x ping_fun() { d_network= echo -n "input the networ ...
- css居中方法详解
水平居中: 通过设置父元素,让子元素内容居中:text-align:center; 通过设置子元素本身,让子元素居中:margin:0 auto; 以上方法生效的前提条件是子元素没有被float元素影 ...
- 011——数组(十一)array_merge array_merge_recursive array_change_key_case
<?php /** */ //array_merge() 将多个数组合并,生成新数组.当键名相同时,后者覆盖前者 /*$array1=array('weburl'=>"bbs.b ...
- Qt界面(控件)相关设计
(转自:http://blog.chinaunix.net/uid-25799257-id-600157.html) 引言 最近在做数据库相关课程设计,所以就借此机会,先熟悉一下Qt的一些编程,同时 ...
- java的简单入门,tomcat服务器
Tomcat是一款开源的处理动态非常牛逼的web服务器.是sun公司开发的,在丧尸危机之后被收购了. 安装Tomcat需要的支持安装包 JDK下载:http://www.oracle.com/tech ...
- vim+ctags用法
vim用法 在VIM编辑器的环境下用":make"就可以编译程序,如果程序中有错误,就会显示出来. 下列命令可以快速定位,并修改错误错误 ":c ...
- C语言动态库和静态库的使用及实践
转自:https://www.cnblogs.com/CoderTian/p/5902154.html 1.C语言中的链接器 (1)每个 C 语言源文件被编译后生成目标文件,这些目标文件最终要被链接 ...