Java实现全图背景水印的示例详解
全村最野的狗 人气:0给图片添加水印的优点
- 可以保护图片的版权:给图片添加水印可以显著地提高图片的版权保护效果。通常,如果没有版权水印的图片在网络上流传,很容易被恶意下载或抄袭。而带有水印的图片则更难被盗用。
- 可以提升图片的市场价值:给图片添加水印可以提高图片的市场价值。通常,带有水印的图片更有价值,并且更受欢迎。
- 可以方便图片的分发:给图片添加水印可以方便图片的分发。例如,你可以将带有水印的图片分发给客户,以此来推广自己的产品或服务。
给图片添加水印的缺点
- 可能会影响图片的视觉效果:如果水印过大或过醒目,可能会影响图片的视觉效果。
- 可能会增加图片的文件大小:如果水印图片过大,可能会增加图片的文件大小。
- 可能难以完全防止图片的盗用:即使给图片添加水印,也不能完全防止图片的盗用。有些人可能会使用图片处理工具将水印去掉。
- 给图片添加水印是一项耗时的任务:特别是当图片数量较多时,给图片添加水印可能会耗费较多的时间。
- 给图片添加水印需要较高的技术水平:给图片添加水印需要较高的技术水平,特别是在给图片添加动态水印或透明水印时。
- 给图片添加水印可能会对图片质量造成影响:特别是当使用低质量的水印图片时,可能会对图片质量造成影响。
添加全图水印
import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class TransparentWatermark { public static void main(String[] args) { // 读取原图片 BufferedImage image = null; try { image = ImageIO.read(new File("original.jpg")); } catch (IOException e) { e.printStackTrace(); } // 获取图片的宽度和高度 int width = image.getWidth(); int height = image.getHeight(); // 创建一个图片缓存对象 BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图片的画笔 Graphics2D g = newImage.createGraphics(); // 将原图片绘制到缓存图片上 g.drawImage(image, 0, 0, width, height, null); // 字体大小 int size = 20; // 设置水印的字体样式 g.setFont(new Font("微软雅黑", Font.BOLD, size)); // 设置水印的颜色 g.setColor(Color.red); // 旋转30度 g.rotate(Math.toRadians(30), width / 2, height / 2); // 设置水印图片的透明度 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.3f)); // x轴间距 应该改为动态计算字符串宽度 int xHeight = 160; // y轴间距 int yHeight = 80; // 设置水印的位置 for (int i = 0; i < width / xHeight + 1; i++) { for (int j = 0; j < height / yHeight + 1; j++) { g.drawString("Hello World!", i * xHeight, j * yHeight + size); } } // 释放图形上下文使用的系统资源 g.dispose(); // 保存带水印的图片 try { ImageIO.write(newImage, "jpg", new File("watermarked-full.jpg")); } catch (IOException e) { e.printStackTrace(); } } }
加载全部内容