java图片合成_Java图片处理(一)图片合成
如何将多个头像合成类似QQ的群头像?
如上图所示,如何用java将单一的图片合成如上群头像。
在一个正方形外框中,要将多个图片合成上述图片。首先要做的是,依据圆相交的程度,计算圆心坐标与图片间空白区域大小。然后设计不同位置的切割模具,最后再将切割好的单一图片,在最终承载的图片上的指定位置绘制出来,即可完成整个合并过程。
参考代码如下:
private String exe5(List urls) throws IOException {
int size = 220, wihteSize = 15;
int x = 130, y = 0;
BufferedImage imageNew = new BufferedImage(480, 480, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics2DNew = imageNew.createGraphics();
imageNew = graphics2DNew.getDeviceConfiguration().createCompatibleImage(480, 480, Transparency.TRANSLUCENT);
graphics2DNew.dispose();
graphics2DNew = imageNew.createGraphics();
graphics2DNew.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
for(int i = 0; i < urls.size(); i++) {
String fileName = urls.get(i);
Area tempArea = new Area();
Ellipse2D.Double circle0 = new Ellipse2D.Double(wihteSize, wihteSize, size - 2 * wihteSize, size - 2 * wihteSize);
if (i == 0) {
Ellipse2D.Double circle1 = new Ellipse2D.Double(-130, 112, size, size);
tempArea.add(new Area(circle0));
tempArea.subtract(new Area(circle1));
} else if (i == 1) {
Ellipse2D.Double circle1 = new Ellipse2D.Double(53, 148, size, size);
tempArea.add(new Area(circle0));
tempArea.subtract(new Area(circle1));
} else if(i == 2) {
Ellipse2D.Double circle1 = new Ellipse2D.Double(153, 0, size, size);
tempArea.add(new Area(circle0));
tempArea.subtract(new Area(circle1));
} else if(i == 3) {
Ellipse2D.Double circle1 = new Ellipse2D.Double(53, -148, size, size);
tempArea.add(new Area(circle0));
tempArea.subtract(new Area(circle1));
} else {
Ellipse2D.Double circle1 = new Ellipse2D.Double(-130, -112, size, size);
tempArea.add(new Area(circle0));
tempArea.subtract(new Area(circle1));
}
graphics2DNew.drawImage(drawImage(fileName, size, tempArea), x, y, null);
if(i == 0) {
x = 0;
y = 112;
} else if (i == 1) {
x = 54;
y = 260;
} else if (i == 2) {
x = 207;
y = 260;
} else if (i == 3) {
x = 260;
y = 112;
} else {
x = 260;
y = 112;
}
}
graphics2DNew.dispose();
……
}
/**
* 往模具中填充图片
* @param fileName
* @param size
* @return
* @throws IOException
*/
private BufferedImage drawImage(String fileName, int size, Area area) throws IOException {
BufferedImage bufferedImage = zipImage(fileName, size);
BufferedImage tempBufferImage = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = tempBufferImage.createGraphics();
tempBufferImage = g2d.getDeviceConfiguration().createCompatibleImage(size, size, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = tempBufferImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setClip(area);
g2d.fill(area);
g2d.drawImage(bufferedImage, 0, 0, null);
g2d.dispose();
return tempBufferImage;
}
合成之后的图片会有一定的毛刺,但是缩小看之后,就无法分辨出来。因此,在客户端进行展示的时候,取缩略图就可以满足需求。
java图片合成_Java图片处理(一)图片合成相关推荐
- java ppt 转图片格式_Java PPT(X)转图片、PDF和SVG
(一)简介: 工作中,PowerPoint文档有时需要被转换为PDF/图像文件来存档.因为PDF或图片的页面布局是固定的,很难被修改且能被大多数设备打开,所以PDF或者图片比起PowerPoint格式 ...
- java 简单图片浏览器_Java实现简单的图片浏览器
第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...
- java保存当前页面为图片大小_java用BufferedImage转换图片大小并保存
java用BufferedImage转换图片大小并保存,保存的图片总是一片黑色 程序实现将一个图片缩小成256*256像素图片并保存,源图片为jpg格式,但是每次转换后存在文件夹中的文件均为一片黑色, ...
- java graphics2d旋转_JAVA用Graphics2D实现图片旋转,缩放,合成
第一步:读入文件 public BufferedImage loadImageLocal(String path) { try { return ImageIO.read(new File(path) ...
- java怎么将加载图片消除_Java中加载图片的方法
Java中添加图片,我知道有两种方法 用new ImageIcon("地址")函数,将图片放到JLabel中,然后把JLabel放到需要的地方就可以了 ImageIcon bg=n ...
- ckeditor java 上传_java使用CKEditor实现图片上传功能
java如何使用ckeditor实现图片上传功能,具体内容如下 1.根据实际需要下载指定的ckeditor 2.删除文件ckeditor/plugins/image/dialogs/image.js预 ...
- java swing背景_java swing 设置背景图片的方法一
下面是偶写着玩的下测试的代码:(不好之处,请多多指教,大家共同进步 ) import java.awt.*; import javax.swing.*; public class ImageDemo ...
- java 图片加密_java 对视频和图片进行加密解密[转]
是时候回到文件加密与解密的具体实现这个主题上来了.后续的举例均采用图片(包括GIF动画)类型,而其他类型资源的实现原理相同,就不一一给出了.首先来看对一幅JPG类型图片进行异或加密的Java实现,由于 ...
- Java服务器上显示图片问题_java,_服务器读取图片到jsp显示问题,java - phpStudy
服务器读取图片到jsp显示问题 我要从服务器读个图片显示到jsp jsp页面 后台 @RequestMapping(value = "getPic", method = Reque ...
- java下载网站图片代码_java下载网上的图片到本地
public class TestImgJsoup { /** * @param urlPath * 图片路径 * @throws Exception */ public void getImages ...
最新文章
- tarjan算法不是很懂先mark一下。
- 计算机语言主要由一些指令组成这些指令包括,(计算机组成指令系统汇编语言.ppt...
- 实验四 Android程序设计
- 超全!嵌入式必懂的CAN总线一文讲通了
- 图片 过度曝光_解读:摄影初学者,如何理性处理“曝光不足”与“曝光过度”...
- openfilename 选择文件夹_这个软件能帮你1秒内搜索文件夹中的东西
- c++ helloworld_《Linux设备驱动程序》(二)——Hello World
- Spring boot web开发实战
- 【经验】使用Oracle的SQL Developer创建用户方法
- Tortoise svn 基础知识
- 个人业务网站php源码,最新个人发卡网源码,PHP运营级个人自动发卡平台完整源码...
- IB中文诗歌手法分析
- 常用优化网页加载速度方法
- ES新建模板时的错误 Client error: `PUT http://127.0.0.1:9200/_template/tmp` resulted in a `400 Bad Request`
- android Stopwatch实例
- 2022-08-15 第四小组 修身课 学习笔记(every day)
- 东半球空间环境地基综合监测子午链——子午工程
- 关于Java自己记不住和不知道的知识点
- WMI Provider Host占用CPU过高
- 对象数组排序,利用jquery