为了在Java中实现图片加水印效果,需要以下步骤:
步骤一:导入依赖
需要导入Java Image I/O工具包和Java 2D API工具包的依赖,可在pom.xml
文件中添加以下代码:
<dependencies>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai-codec</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
步骤二:读取图片
可以使用ImageIO
工具类的read
方法读取图片到内存中:
File imageFile = new File("test.jpg");
BufferedImage bufferedImage = ImageIO.read(imageFile);
步骤三:创建水印
在Java中创建水印需要使用Graphics2D
类,可以使用以下代码创建一个具有指定长度和宽度的透明图片:
// 创建一个100x30大小的透明图片
BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_ARGB);
// 获取画笔
Graphics2D g2d = image.createGraphics();
// 设置画笔透明度
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
g2d.setComposite(alpha);
// 绘制水印文本
Font font = new Font("Arial", Font.BOLD, 16);
g2d.setFont(font);
g2d.setColor(Color.WHITE);
g2d.drawString("Test watermark", 10, 20);
// 释放资源
g2d.dispose();
步骤四:将水印添加到原始图片中
可以使用以下代码将创建的水印添加到原始图片中:
// 获取原始图片宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
// 获取水印图片宽度和高度
int watermarkWidth = image.getWidth();
int watermarkHeight = image.getHeight();
// 将水印添加到原始图片中
Graphics2D g2d = bufferedImage.createGraphics();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(image, width - watermarkWidth - 10, height - watermarkHeight - 10, null);
// 释放资源
g2d.dispose();
示例一:添加文字水印
下面是一个示例,将一个文字水印添加到图片的左上角。
File imageFile = new File("test.jpg");
BufferedImage bufferedImage = ImageIO.read(imageFile);
// 创建一个100x30大小的透明图片
BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_ARGB);
// 获取画笔
Graphics2D g2d = image.createGraphics();
// 设置画笔透明度
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f);
g2d.setComposite(alpha);
// 绘制水印文本
Font font = new Font("Arial", Font.BOLD, 16);
g2d.setFont(font);
g2d.setColor(Color.WHITE);
g2d.drawString("Test watermark", 10, 20);
// 释放资源
g2d.dispose();
// 获取原始图片宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
// 获取水印图片宽度和高度
int watermarkWidth = image.getWidth();
int watermarkHeight = image.getHeight();
// 将水印添加到原始图片中
g2d = bufferedImage.createGraphics();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(image, 10, 10, null);
// 释放资源
g2d.dispose();
// 输出水印后的图片
File output = new File("output.jpg");
ImageIO.write(bufferedImage, "jpg", output);
示例二:添加图片水印
下面是一个示例,将一个图片水印添加到图片的右下角。
File imageFile = new File("test.jpg");
BufferedImage bufferedImage = ImageIO.read(imageFile);
File watermarkFile = new File("watermark.png");
BufferedImage watermarkImage = ImageIO.read(watermarkFile);
// 获取原始图片宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
// 获取水印图片宽度和高度
int watermarkWidth = watermarkImage.getWidth();
int watermarkHeight = watermarkImage.getHeight();
// 将水印添加到原始图片中
Graphics2D g2d = bufferedImage.createGraphics();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(watermarkImage, width - watermarkWidth - 10, height - watermarkHeight - 10, null);
// 释放资源
g2d.dispose();
// 输出水印后的图片
File output = new File("output.jpg");
ImageIO.write(bufferedImage, "jpg", output);
这样,我们就可以将制作出来的图片加上水印,并输出到指定的文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现图片加水印效果 - Python技术站