我需要一个图片添加水印得代码
时间: 2024-03-27 07:39:03 浏览: 106
好的,以下是一个Python的示例代码,可以使用Pillow库来添加水印:
```python
from PIL import Image, ImageDraw, ImageFont
# 打开图片
image = Image.open("example.jpg")
# 创建一个新的图片对象,大小与原图相同
watermark = Image.new('RGBA', image.size, (0,0,0,0))
# 创建Draw对象,用于在水印上绘制文本
draw = ImageDraw.Draw(watermark)
# 选择一个字体
font = ImageFont.truetype("arial.ttf", 36)
# 在水印上绘制文本
draw.text((10, 10), "Watermark", font=font)
# 将水印透明度设置为50%
watermark.putalpha(128)
# 将水印添加到原图上
Image.composite(watermark, image, watermark).save("example_with_watermark.jpg")
```
这个代码会在原图上添加一个水印,水印内容为"Watermark",使用了默认的字体arial.ttf,可以根据需要自行修改。添加完成后,将新的图片保存到"example_with_watermark.jpg"。
相关问题
我需要一个图片添加水印的java代码
好的,以下是一个Java的示例代码,可以使用Java的Graphics2D类来添加水印:
```java
import java.awt.AlphaComposite;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Watermark {
public static void main(String[] args) throws Exception {
// 打开图片
BufferedImage image = ImageIO.read(new File("example.jpg"));
// 创建一个新的图片对象,大小与原图相同
BufferedImage watermark = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
// 创建Graphics2D对象,用于在水印上绘制文本
Graphics2D g2d = (Graphics2D) watermark.getGraphics();
// 设置绘制文本的字体和颜色
g2d.setFont(new Font("Arial", Font.BOLD, 48));
g2d.setColor(java.awt.Color.WHITE);
// 在水印上绘制文本
g2d.drawString("Watermark", 10, 50);
// 将水印透明度设置为50%
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
// 将水印添加到原图上
Graphics2D g2d_image = (Graphics2D) image.getGraphics();
g2d_image.drawImage(watermark, 0, 0, null);
g2d_image.dispose();
// 保存图片
ImageIO.write(image, "jpg", new File("example_with_watermark.jpg"));
}
}
```
这个代码会在原图上添加一个水印,水印内容为"Watermark",使用了默认的字体Arial,可以根据需要自行修改。添加完成后,将新的图片保存到"example_with_watermark.jpg"。
帮我写一个 给图片加水印的代码
当给图片加水印时,需要用到 Java 图形处理库。常用的 Java 图形处理库有 `Java2D` 和 `ImageIO`,这里以 `ImageIO` 为例进行说明。
以下是一个使用 `ImageIO` 给图片加水印的示例代码:
```java
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class WatermarkDemo {
public static void main(String[] args) throws IOException {
File originalFile = new File("original.jpg");
File watermarkedFile = new File("watermarked.jpg");
// 读取原始图片
BufferedImage originalImage = ImageIO.read(originalFile);
int width = originalImage.getWidth();
int height = originalImage.getHeight();
// 创建一个带透明度的 BufferedImage
BufferedImage watermarkedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = watermarkedImage.createGraphics();
g2d.drawImage(originalImage, 0, 0, null);
// 添加水印文字
String watermarkText = "www.example.com";
Font font = new Font("SimSun", Font.BOLD, 36);
g2d.setFont(font);
g2d.setColor(Color.RED);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
int x = 50;
int y = height - 50;
g2d.drawString(watermarkText, x, y);
g2d.dispose();
// 输出水印图片
ImageIO.write(watermarkedImage, "png", watermarkedFile);
}
}
```
上述代码中,`originalFile` 是要添加水印的图片,`watermarkedFile` 是添加水印后的图片。通过 `ImageIO.read()` 方法读取原始图片,然后创建一个带透明度的 `BufferedImage`,并将原始图片绘制到其中。通过 `Graphics2D` 对象来添加水印文字,其中:
- `setFont()` 方法设置水印文字的字体;
- `setColor()` 方法设置水印文字的颜色;
- `setComposite()` 方法设置水印文字的透明度;
- `drawString()` 方法将水印文字绘制到图片上。
需要注意的是,在使用中文字体时,要确保字体文件存在,并且字体名称正确。如果出现乱码问题,可以尝试使用 UTF-8 编码,并设置 JVM 参数 `-Dfile.encoding=UTF-8`。
最后,通过 `ImageIO.write()` 方法将带水印的 `BufferedImage` 输出为图片文件,其中第二个参数表示输出图片的格式,可以根据需要设置为 `jpg`、`png`、`gif` 等格式。
阅读全文