照片重複

使用 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 時遇到任何問題,可以考慮通過免費的 產品支持論壇 聯繫我們尋求快速解決方案。

相關文章

請訪問以下鏈接以了解更多信息: