java处理图片添加水印

图片叠加技术,大多数用于给图片加上水印。
通常情况下,准备2张图片,1张是大的图片(商品图、景色图、广告图等)
另1张是一个LOGO或是客户自己制作的水印或图章。
通过此类,可以把LOGO或水印覆盖到大的图片上面,
从而达到类似于图片版权所有的效果。
如:淘宝网上的商品图片的边角总有"taobao.com"等水印字样。
这些字样就是通过图片叠加技术生成的,而不是个人手工所为。


package com.redbaby.test;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;

import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;


public class Test {
public static void main(String[] args) {

try {
/**
* 下面代码的"D:\\1.jpg",是我把商品图片(需要被加水印的图片)
* 保存在D盘,并起名为1.jpg,这里您根据您的图片的实际位置来输
* 入正确的文件路径。
*/
File formerFile = new File("D:\\1.jpg");
Image formerImage = ImageIO.read(formerFile);
//以下2行代码分别获得图片的宽(width)和高(height)
int width = formerImage.getWidth(null);
int height = formerImage.getHeight(null);
System.out.println("原始图片的宽为:"+width+"\n原始图片的高为:"+height);
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.drawImage(formerImage, 0, 0, width, height, null);

/**
* 下面代码的"D:\\sy.gif",是我把水印图片保存在D盘,
* 并起名为sy.gif,这里您根据您的图片的实际位置来输
* 入正确的文件路径。
*/
File waterMarkFile = new File("D:\\sy.gif");
Image waterMarkImage = ImageIO.read(waterMarkFile);
int widthWMI = waterMarkImage.getWidth(null);
int heightWMI = waterMarkImage.getHeight(null);
/**
* 以下2行代码的x,y分别表示水印图片在原始图片的位置。
* x,y为坐标。width,height为商品图片的宽和高。
* width * 0.5 表示水印图片的水平位置覆盖在商品图片
* 水平位置的正中间。height * 0.5 表示垂直位置。
* 最终无论商品图片的宽高是多少,水印图片都会显示在
* 商品图片的正中间。
* 您可以根据您的需求,更改0.5这个数值,达到您想要的效果。
* 这里我说的商品图片就是要被水印覆盖的图片。
*/
int x = (int)(width * 0.5); //"0.5"小数越大,水印越向左移动。
int y = (int)(height * 0.5); //"0.5"小数越大,水印越向上移动。
g.drawImage(waterMarkImage, width - widthWMI - x, height - heightWMI - y, widthWMI,
heightWMI, null);

/**
* 输出被加上水印的图片,也就是最终的效果。
* 注意!下面代码的"D:\\1.jpg"是最后输出
* 的文件,如果跟你原始文件的路径和名字相同
* 的话,那么会覆盖掉原始文件。
* 如:我的原始文件位于"D:\\1.jpg",而下
* 面的代码运行之后,我的原始文件就会丢失被
* 覆盖掉。
* 您可以根据您的需要把加上水印后的图片放到
* 您指定的文件路径。
*/
g.dispose();
FileOutputStream out = new FileOutputStream("D:\\1.jpg");
//下面代码将被加上水印的图片转换为JPEG、JPG文件
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
System.out.println("水印已经添加成功!");
} catch (Exception e) {
e.printStackTrace();
}
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值