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();
}
}
}
做个笔计
http://yangjb.iteye.com/blog/1297740 转载之
分享到:
相关推荐
JAVA处理图片 加文字水印以及灰色透明背景,处理图片。
Java为图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->...
struts2 上传 java 图片水印 改变图片大小
Java为图片添加水印效果,将两张图像合成为一张,添加前可预览水印,对bmp后缀的图片格式进行处理, 支持批量添加水印图像,生成水印图片。 @param buffImg 图像加水印之后的BufferedImage对象 @param ...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
java 可以处理19.5 M以下的正常图片 , 不知道大图怎么处理 只能ps 了, jdk可能不行
ImageIO是Java提供的一个内置库,可以用于处理图片。它支持多种图片格式,包括JPEG、PNG和BMP等。要给图片添加水印,首先需要加载原始图片,然后创建一个Graphics2D对象来绘制水印。在绘制水印之后,将结果保存为一...
java 处理图片大小等比例缩放;图片裁剪;支持图片压缩不失真;支持图片添加水印;支持动态图的处理;支持自定义图片大小的转换 等 压缩包中内附使用说明
java处理图片拼接和添加水印,包含详细注解
解决图片的批量处理大小,批量给图片加图片水印,加文字水印
因为项目中考虑到添加图片版权的保护,特意看了下水印的处理...以下有两种方式:第一种是添加文字水印;第二种是添加图片水印和文字水印两种方法,水印图片可以是GIF,PNG透明的文件,我一般采用的是PNG的,因为它的...
因为项目中考虑到添加图片版权的保护,特意看了下水印的处理...以下有两种方式:第一种是添加文字水印;第二种是添加图片水印和文字水印两种方法,水印图片可以是GIF,PNG透明的文件,我一般采用的是PNG的,因为它的...
而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为热情为热情 而且热情为...
用java技术处理图片,生成缩略图,添加水印,切割裁剪图片,格式转换
包含了一些java对图片操作处理的方法: 1.给图片添加图片水印 2.给图片添加文字水印 3.图片缩放 *主方法测试代码简单易懂
java图像处理,用于对图像的识别与加水印
java——图片字体显示方块问题处理 /usr/java/jdk1.7.0_80/jre/lib/fonts/fallback msyhbd.ttf msyh.ttf wqy-microhei.ttf /usr/java/jdk1.7.0_80/lib/fonts/fallback msyhbd.ttf msyh.ttf wqy-microhei.ttf
html,jsp图片在java中的缩放处理和加水印功能 主要有图片和文字水印
上传之前预览 ,上传到服务器后加文字水印 或者 图片水印,调用相应的方法即可
java对图片进行处理如:获取宽高、缩图、剪图、加文字水印、加图片水印