使用 Java 为图像添加水印

水印是叠加在照片或图像上的图像、徽标、图案或文本。它可用于识别图像的创建者。您可以在云端以编程方式为任何图像添加水印。本文将重点介绍如何使用 Java 中的 REST API 为图像添加水印。

本文应涵盖以下主题:

水印 REST API 和 Java SDK

为了给图像加水印,我将使用 GroupDocs.Watermark Cloud 的 Java SDK API。它允许您以编程方式添加、删除、搜索和替换来自支持格式(如 PDF、Microsoft Word 和 Powerpoint)的图像和文档中的水印。目前,它还为 Cloud API 提供 .NET SDK。

通过添加以下 pom.xml 配置,您可以在基于 Maven 的 Java 应用程序中轻松使用 GroupDocs.Watermark Cloud。

<repository>
    <id>groupdocs-artifact-repository</id>
    <name>GroupDocs Artifact Repository</name>
    <url>https://repository.groupdocs.cloud/repo</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-watermark-cloud</artifactId>
	<version>19.12</version>
	<packaging>jar</packaging>
</dependency>

在开始执行步骤和可用代码示例之前,请从 dashboard 获取您的 Client ID 和 Client Secret。在代码中添加您的 ID 和 Secret,如下所示:

String clientId = "da0c487d-c1c0-45ae-b7bf-43eaf53c5ad5";
String clientSecret = "479db2b01dcb93a3d4d20efb16dea971";
String myStorage = "";

Configuration configuration = new Configuration(clientId, clientSecret);

使用 REST API 向图像添加文本水印

您可以按照以下简单步骤为照片或图像文件添加文本水印:

上传 JPG 图片

首先,使用下面给出的代码示例将 JPG 图像文件上传到云端:

// 接口初始化
FileApi apiInstance = new FileApi(clientId, clientSecret);
File fileStream = new File("C:\\Files\\sample.jpg");

// 创建文件上传请求
UploadFileRequest request = new UploadFileRequest("sample.jpg", fileStream, myStorage);
FilesUploadResult response = apiInstance.uploadFile(request);

结果,JPG 文件将上传到 Cloud Storage,并可在仪表板的 文件部分 中找到。

使用 Java 将文本水印添加到 JPG 图像

您可以按照下面给出的步骤以编程方式向 JPEG 图像添加文本水印。

  • 创建 WatermarkApi 实例
  • 在FileInfo模型中设置JPEG图片文件路径
  • 定义 WatermarkOptions 并设置 FileInfo
  • 定义 TextWatermarkOptions
  • 设置文本、字体系列、字体大小和文本对齐方式
  • 设置水印文字前景色
  • 定义水印位置
  • 定义 WatermarkDetails 并设置 TextWatermarkOptions 和 Position
  • 将 WatermarkDetails 设置为列表
  • 使用 WatermarkOptions 创建 AddRequest
  • 调用WatermarkApi.add()方法获取结果

以下代码示例展示了如何使用 REST API 将文本作为水印添加到图像中。

// 接口初始化
WatermarkApi apiInstance = new WatermarkApi(configuration);

// 设置JPG文件路径
FileInfo fileInfo = new FileInfo();
fileInfo.setFilePath("sample.jpg");
fileInfo.setStorageName(myStorage);

// 定义水印选项
WatermarkOptions options = new WatermarkOptions();
options.setFileInfo(fileInfo);

// 定义文本水印选项
TextWatermarkOptions textWatermarkOptions = new TextWatermarkOptions();
textWatermarkOptions.setText("Copyright© 2021");
textWatermarkOptions.setFontFamilyName("Arial");
textWatermarkOptions.setFontSize(12d);
textWatermarkOptions.setTextAlignment("Center");

// 设置水印文字颜色
Color color = new Color();
color.setName("White");
textWatermarkOptions.setForegroundColor(color);

// 定义水印细节
WatermarkDetails watermarkDetails = new WatermarkDetails();
watermarkDetails.setTextWatermarkOptions(textWatermarkOptions);

// 设置水印位置
Position position = new Position();
position.setX(180.0);
position.setY(450.0);
watermarkDetails.setPosition(position);

// 设置水印细节
List<WatermarkDetails> watermarkDetailsList = new ArrayList<WatermarkDetails>();
watermarkDetailsList.add(watermarkDetails);
options.setWatermarkDetails(watermarkDetailsList);

// 创建添加水印请求
AddRequest request = new AddRequest(options);
WatermarkResult response = apiInstance.add(request);

System.out.println("Resultant file path: " + response.getPath());
为图片添加文字水印

为图片添加文字水印

下载更新的图像

以上代码示例将带水印的图像文件保存在云端。您可以使用以下代码示例下载它:

// 接口初始化
FileApi apiInstance = new FileApi(clientId, clientSecret);

// 创建下载文件请求
DownloadFileRequest request = new DownloadFileRequest("watermark/added_watermark/sample_jpg/sample.jpg", "", null);
File response = apiInstance.downloadFile(request);

使用 REST API 将图像水印添加到图像

您可以按照以下步骤以编程方式向 JPEG 图像添加图像或徽标水印。

  • 创建 WatermarkApi 实例
  • 在FileInfo模型中设置JPEG图片文件路径
  • 定义 WatermarkOptions 并设置 FileInfo
  • 定义 ImageWatermarkOptions
  • 将 PNG 图像的文件路径设置为水印
  • 定义水印位置
  • 定义 WatermarkDetails 并设置 ImageWatermarkOptions 和 Position
  • 将 WatermarkDetails 设置为列表
  • 使用 WatermarkOptions 创建 AddRequest
  • 调用WatermarkApi.add()方法获取结果

以下代码示例显示了如何使用 REST API 将图像作为水印添加到 JPEG 图像。请按照前面提到的步骤上传和下载文件。

// 接口初始化
WatermarkApi apiInstance = new WatermarkApi(configuration);

// 设置JPG文件路径
FileInfo fileInfo = new FileInfo();
fileInfo.setFilePath("sample.jpg");
fileInfo.setStorageName(myStorage);

// 定义水印选项
WatermarkOptions options = new WatermarkOptions();
options.setFileInfo(fileInfo);

// 定义水印细节
WatermarkDetails watermarkDetails = new WatermarkDetails();

// 定义水印图像选项
ImageWatermarkOptions imageWatermarkOptions = new ImageWatermarkOptions();
FileInfo image = new FileInfo();
image.setFilePath("sample_watermark.png");
image.setStorageName(myStorage);
imageWatermarkOptions.setImage(image);

// 设置水印位置
Position position = new Position();
position.setX(100.0);
position.setY(450.0);
watermarkDetails.setPosition(position);

// 设置图像水印选项
watermarkDetails.setImageWatermarkOptions(imageWatermarkOptions);

List<WatermarkDetails> watermarkDetailsList = new ArrayList<WatermarkDetails>();
watermarkDetailsList.add(watermarkDetails);
options.setWatermarkDetails(watermarkDetailsList);

// 创建添加请求
AddRequest request = new AddRequest(options);
WatermarkResult response = apiInstance.add(request);

System.out.println("Resultant file path: " + response.getPath());
为图片添加图片水印

为图片添加图片水印

在线试用

请尝试以下使用上述 API 开发的免费在线水印工具。 https://products.groupdocs.app/watermark/jpeg

结论

总之,您已经了解了如何向云端的 JPEG 图像添加文本或图像水印。您还学习了如何以编程方式将图像文件上传到云端,然后从云端下载它们。您可以从 文档 了解有关 GroupDocs.Watermark Cloud API 的更多信息。我们还提供了一个 API 参考 部分,让您可以直接通过浏览器可视化我们的 API 并与之交互。如有任何疑问,请随时联系 支持

也可以看看