博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JDK合成照片
阅读量:5134 次
发布时间:2019-06-13

本文共 2650 字,大约阅读时间需要 8 分钟。

  原图(工程所在目录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):

 

 

转载于:https://www.cnblogs.com/wuxun1997/p/9839296.html

你可能感兴趣的文章
pku 3411 Paid Roads DFS+灵活技巧卡节点访问次数
查看>>
lex yacc 入门教程(3)正则表达式和lex变量及函数
查看>>
Android对话框自定义标题
查看>>
【奇淫巧技】打狗棒法---过安全狗注入手法
查看>>
在Pandas中直接加载MongoDB的数据
查看>>
Linux(CentOS6.5)修改默认yum源为国内的阿里云、网易yum源
查看>>
Linux(CentOS7.1)修改默认yum源为国内的阿里云yum源
查看>>
delphi三方控件的安装方法
查看>>
(转)C# Color类图示
查看>>
寒假作业3(传说中的写软件)
查看>>
c/c++ static
查看>>
Threadump analyzed Learning plan
查看>>
Xinlinx 7系列FPGA概览
查看>>
【Linux 命令】- tail命令
查看>>
2018软工实践第二次作业
查看>>
报错Caused by: org.hibernate.AnnotationException: No identifier specified for entity:
查看>>
MySQL教程(十二)—— 数据的导入与导出
查看>>
《人月神话》读书笔记2--空间技能
查看>>
ZooKeeper系列(3):znode说明和znode状态
查看>>
JavaScript面向对象和原型函数
查看>>