java 图片合并_Java如何实现图片的叠加与拼接操作

本文介绍了如何使用Java的BufferedImage类进行图片处理,包括读取图片、保存图片,以及实现图片的叠加和拼接操作。通过示例代码详细展示了如何创建Graphics2D对象进行图片叠加,并提供了水平和垂直方向的图片拼接方法。
摘要由CSDN通过智能技术生成

关于Java实现图片的叠加与拼接的文章网络上确实很多,碰巧小编开发工作中也遇到这些问题,就做了简要的梳理,作为笔记以备不时之需。

Java对图片的处理主要使用的是BufferedImage类。

0ecf8406bbf625888efe159baa638055.png

BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。BufferedImage 由图像数据的 ColorModel 和 Raster 组成。Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角坐标都为 (0, 0)。因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。此类依靠 Raster 的数据获取方法、数据设置方法,以及 ColorModel 的颜色特征化方法。

以上主要来源于官方文档,我们来时直接写实践代码吧。

首先将文件转化为BufferedImage对象,这里给出两种读取文件并转化为BufferedImage对象的方法。

/**

* @param fileUrl 文件绝对路径或相对路径

* @return 读取到的缓存图像

* @throws IOException 路径错误或者不存在该文件时抛出IO异常

*/

public static BufferedImage getBufferedImage(String fileUrl)

throws IOException {

File f = new File(fileUrl);

return ImageIO.read(f);

}

/**

* 远程图片转BufferedImage

* @param destUrl 远程图片地址

* @return

*/

public static BufferedImage getBufferedImageDestUrl(String destUrl) {

HttpURLConnection conn = null;

BufferedImage image = null;

try {

URL url = new URL(destUrl);

conn = (HttpURLConnection) url.openConnection();

if (conn.getResponseCode() == 200) {

image = ImageIO.read(conn.getInputStream());

return image;

}

} catch (Exception e) {

e.printStackTrace();

} finally {

conn.disconnect();

}

return image;

}

接下来是将BufferedImage对象保存到本地,具体方法如下:

/**

* 输出图片

* @param buffImg 图像拼接叠加之后的BufferedImage对象

* @param savePath 图像拼接叠加之后的保存路径

*/

public static void generateSaveFile(BufferedImage buffImg, String savePath) {

int temp = savePath.lastIndexOf(".") + 1;

try {

File outFile = new File(savePath);

if(!outFile.exists()){

outFile.createNewFile();

}

ImageIO.write(buffImg, savePath.substring(temp), outFile);

System.out.println("ImageIO write...");

} catch (IOException e) {

e.printStackTrace();

}

}

以上作为准备部分,现在开始图片叠加的实现方法:

/**

*

* @Title: 构造图片

* @Description: 生成水印并返回java.awt.image.BufferedImage

* @param buffImg 源文件(BufferedImage)

* @param waterFile 水印文件(BufferedImage)

* @param x 距离右下角的X偏移量

* @param y 距离右下角的Y偏移量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值