使用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列出了几种神奇的图像处理算法,让我们一起来 ...
随机推荐
- Centos7 使用Dockerfile 制作自己的Dotnetcore程序镜像
准备Centos7环境及Docker环境 从Docker hub拉取 Microsoft/dotnet 基础镜像(可以使用国内加速) 向Centos7指定目录上传Dotnet Core程序,目录: / ...
- MySQL简单的操作,增删改查
B/S架构模式与C/S架构模式的区别 B/S=WEB/SERVER C/S=CLIENT/SERVIR B/S:用户通过web浏览器打开域名就能访问服务器server的方式就叫做B/S用户不需要安装任 ...
- 判断两个控件在同一个Window上是否有重叠
判断两个控件在同一个Window上是否有重叠 //对UIView写分类 - (BOOL)intersectWithView:(UIView *)view; - (BOOL)intersectWithV ...
- Alpha冲刺一 (2/10)
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9960487.html 作业博客:https://edu.cnblogs.com/campus/ ...
- 获取img元素图片的实际尺寸
// Get on screen image var screenImage = $("#image"); // Create new offscreen image to tes ...
- c# 处理js序列化时 datetime返回UTC格式的问题
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using Syst ...
- document和javaScript内置对象
1.Document 属性: referrer //返回载入当前文档的URL URL //返回当前文档的URL 方法: getElementById(); //根据id获取html元素对象 getEl ...
- Leetcode 429. N-ary Tree Level Order Traversal
bfs class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: q,ans=[root],[] while ...
- 理解 XCode 中的 Git 版本控制
连接地址:http://www.oschina.net/translate/git-source-control-in-xcode?cmp&p=1#
- 【Python】下载图片
import requests import bs4 import urllib.request import urllib import os hdr = {'User-Agent': 'Mozil ...