照片重复

使用 Java Cloud SDK 查找重复图像

JPG 图像是一种流行的打印和编辑格式。此外,它是一种流行的图像格式,用于在互联网上以及移动和 PC 用户之间共享照片和其他图像。 JPG 图像的小文件大小允许在小内存空间中存储数千张图像。现在由于压缩是有损的,这意味着某些不必要的信息被永久删除。另一方面,PNG 相对于 JPEG 的最大优势在于压缩是无损的,这意味着每次打开和再次保存时都不会出现质量损失。 PNG 还可以很好地处理细节丰富的高对比度图像。现在在本文中,我们将讨论有关如何使用 Java Cloud SDK 将 JPG 转换为 PNG 的详细信息

图像转换API

我们基于 REST 的 API 提供了创建、编辑图像文件并将其转换为各种支持的文件格式 的功能。现在,为了实现在 Java 应用程序中加载和转换 jpg 到 png 透明的功能,我们需要使用 Aspose.Imaging Cloud SDK for Java,因为它是 Cloud API 的包装器。所以下一步是通过在 maven 构建类型项目的 pom.xml 中包含以下信息,在 java 项目中添加它的引用。

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-imaging-cloud</artifactId>
        <version>22.4</version>
    </dependency>
</dependencies>

在项目中添加 JDK 引用后,下一个重要步骤是在 Aspose Cloud Dashboard 上创建一个免费帐户。只需通过有效的电子邮件地址注册免费试用。现在使用新创建的帐户登录并在 Cloud Dashboard 查找/创建客户端 ID 和客户端密码。在以下部分中,出于身份验证目的需要这些详细信息。

在 Java 中将 JPG 转换为 PNG

现在让我们讨论如何使用 Java 代码片段将 JPG 转换为 PNG 的细节。为了执行转换,我们有两个 API 将图像转换为另一种格式:

GET API 希望我们首先将图像上传到 Cloud Storage,然后在 API URL 中传递其名称。更新图像参数后,API 在响应中返回更新后的图像。如果您想将更新后的图像保存在 Cloud Storage 上,您明确需要按照以下示例所示执行此操作。

另一方面,在调用第二个 POST API 时,可以直接在请求体中传递图片。它还允许您通过指定 outPath 参数值将更新后的图像保存在 Cloud Storage 上。但是,如果您未指定该值,则响应将包含流图像。

  • 根据您的个性化客户端凭证创建 ImagingApi 实例
  • 使用 File[] 对象从本地文件夹中读取所有 JPG 文件
  • 遍历数组中的文件并将单个图像的内容放入 byte[] 实例
  • 现在创建一个 CreateConvertedImageRequest 对象,我们将输出图像格式指定为 PNG
  • 调用方法 createConvertedImage(…) 将 JPG 保存为 PNG 并将结果作为响应流返回
  • 最后使用 FileOutputStream 对象将 PNG 文件保存到本地驱动器
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// 创建成像对象
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

File directory = new File("/Users/");
//从文件夹中获取所有文件
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
    throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}

//在此处设置所需的图像扩展名。
List<String> supportedImageExtensions = Arrays.asList("jpg","jpeg");

int counter =0;
//JPG 图像文件的筛选列表
List<File> acceptedImages = new ArrayList<>();

// 遍历从本地文件夹读取的每个图像文件			 
for (File file : allFiles) {
    //解析文件扩展名
    String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
	
    //检查扩展名是否在 supportedImageExtensions 中列出
    if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
	//将图像添加到筛选列表
	acceptedImages.add(file);
                  
    // 读取JPG图像内容
    byte[] bytes = Files.readAllBytes(acceptedImages.get(counter).toPath());
    
    // 创建图像转换请求,结果格式为 PNG
    CreateConvertedImageRequest request = new CreateConvertedImageRequest(bytes, "PNG", null, null);
    
    // 将 JPG 转换为 PNG 并在响应流中返回结果文件
    byte[] exportedImage = imageApi.createConvertedImage(request);
    
    // 将导出的图像保存到本地存储
    FileOutputStream fos = new FileOutputStream(directory + "/"+file.getName().replaceFirst("[.][^.]+$", "")+".png");
    fos.write(exportedImage);
    fos.close();
    }
}

使用 cURL 命令将 JPG 更改为 PNG

由于我们可以使用 cURL 命令访问 REST API,因此在本节中,我们将探索将 JPG 透明转换为 PNG 的细节。现在作为先决条件,我们需要在执行以下命令时首先生成 JWT 访问令牌(基于客户端凭据)。

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

现在我们要使用 ConvertImage API 调用,它期望输入的 JPG 已经在云存储中可用。现在请执行以下命令将 JPG 更改为 PNG。

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/image1.jpg/convert?format=PNG" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o Converted.png

结论

本文提供了一些关于如何使用 Java 代码片段将 JPG 转换为 PNG 的惊人细节。同样,我们也讨论了使用 cURL 命令将 JPG 透明转换为 PNG 的步骤。请注意,产品文档 是了解 API 提供的其他令人兴奋的功能的绝佳去处。如果您需要在浏览器中试用这些 API,请尝试使用 swagger API 参考

倒数第二个,请注意我们所有的 Cloud SDK 都是在 MIT 许可下发布的,因此您可以考虑从 GitHub 下载完整的源代码并根据您的要求进行修改。最后,如果您在使用 API 时遇到任何问题,可以考虑通过免费的 产品支持论坛 联系我们寻求快速解决方案。

相关文章

请访问以下链接以了解更多信息: