天天看點

如何使用 Java 将圖像檔案轉換為 GIF 或 WebP 格式

每日分享最新,最流行的軟體開發知識與最新行業趨勢,希望大家能夠一鍵三連,多多支援,跪求關注,點贊,留言。

了解如何将數十種常見的圖像檔案類型(包括但不限于 PNG 和 JPG)分别轉換為 GIF 和 WebP 格式。

如何使用 Java 将圖像檔案轉換為 GIF 或 WebP 格式

如果我們準備線上為特定目的重新格式化圖像,我們選擇的新格式需要準确反映我們設想的用例。否則,我們會在不經意間扼殺我們自己的效率,最重要的是,冒着降低網頁加載速度的風險。對于大多數檔案格式選擇也是如此:我們不會使用 Microsoft Word 建立電子表格,也不會使用 Excel 撰寫論文(盡管從技術上講兩者都可以)。

選擇使用哪種圖像格式需要我們考慮我們期望該檔案服務的确切目的。雖然我們在網上遇到的最普遍的格式——即JPG 和 PNG——為它們各自的用例提供了衆所周知的好處,但它們在某些關鍵領域也存在不足。例如,雖然 JPG 格式由于其高度壓縮(允許網頁運作得更快)而被廣泛用于網站頁面,但這種壓縮程度會犧牲大量的圖像品質,我們可能并不總是願意失去. 雖然 PNG 是一種具有内置透明度功能的無損格式——非常适合在純色背景上顯示圖形、徽标和插圖等内容——但它明顯缺乏适應常見線上用例(如圖像動畫)的能力當需要時。

對于我們更專業的格式要求,我們可以求助于其他常見的圖像格式——無論是舊的還是新的——來實作我們的目标。GIF 格式已經有 30 多年的曆史了——它比最初的網際網路還要早——但它獨特地允許建立基本的逐幀動畫,并且它還允許網頁以更高的速度加載這些動畫速度比同類方法(例如,傳統的視訊插件)可以。 WebP 格式——由谷歌在 10 多年前建立——足夠新,它仍然缺乏與許多網站的上傳相容性,但它的優勢是不可否認的:它不僅比 JPG 提供超過 20% 的壓縮率,而且PNG,但它允許有損和無損壓縮,確定我們并不總是需要在圖像品質和網頁加載速度之間進行選擇。

鑒于這些常見圖像格式的不同用例,格式之間的轉換是許多内容專業人員的日常需求,這種需求鼓勵采購能夠大規模高效執行轉換的服務。下面,我将示範如何利用兩種 API 解決方案,幫助将數十種常見圖像檔案類型(包括但不限于 PNG 和 JPG)分别轉換為 GIF 和 WebP 格式。

示範

下面,我提供了 Java 代碼示例來幫助您建構對上述兩種圖像格式轉換 API 解決方案的 API 調用。此外,我還提供了幫助您使用 Maven 或 Gradle 安裝圖像轉換 API 用戶端的說明(取決于您的偏好)。

要使用 Maven 開始 API 用戶端安裝階段,我們的第一步是在 pom.xml 中添加對存儲庫的引用:

<repositories>

<repository>

<id>jitpack.io</id>

<url>https://jitpack.io</url>

</repository>

</repositories>

之後,我們需要添加以下依賴引用,這将允許 JitPack 動态編譯庫:

<dependencies>

<dependency>

<groupId>com.github.Cloudmersive</groupId>

<artifactId>Cloudmersive.APIClient.Java</artifactId>

<version>v4.25</version>

</dependency>

</dependencies>

要使用Gradle安裝,我們需要首先将以下代碼段添加到根 build.gradle(在存儲庫的末尾):

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

然後,總結一下,我們需要在 build.gradle 中添加依賴項:

dependencies {

implementation 'com.github.Cloudmersive:Cloudmersive.APIClient.Java:v4.25'

}

安裝步驟完成後,我們現在可以為每個 API 解決方案添加導入,然後直接調用它們各自的函數。在我們這樣做之前,我想快速指出,在下面提供的每個函數中,都有一個身份驗證字段(在導入下方,由代碼注釋訓示)捕獲 API 密鑰輸入。在 Cloudmersive 網站上注冊免費層 API 密鑰後,您隻需将 API 密鑰字元串複制并粘貼到相應字段中,即可完成API 密鑰身份驗證步驟。

要将圖像轉換為 GIF 格式,我們将調用以下函數。我們需要做的就是在imageFile字段中包含我們的圖像檔案路徑,然後我們就完成了:

// Import classes:

//import com.cloudmersive.client.invoker.ApiClient;

//import com.cloudmersive.client.invoker.ApiException;

//import com.cloudmersive.client.invoker.Configuration;

//import com.cloudmersive.client.invoker.auth.*;

//import com.cloudmersive.client.ConvertApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey

ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");

Apikey.setApiKey("YOUR API KEY");

// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)

//Apikey.setApiKeyPrefix("Token");

ConvertApi apiInstance = new ConvertApi();

File imageFile = new File("/path/to/inputfile"); // File | Image file to perform the operation on. Common file formats such as PNG, JPEG are supported.

try {

byte[] result = apiInstance.convertToGif(imageFile);

System.out.println(result);

} catch (ApiException e) {

System.err.println("Exception when calling ConvertApi#convertToGif");

e.printStackTrace();

}

要将圖像轉換為 WebP 格式,我們将調用以下函數。就像以前一樣,隻需在imageFile字段中包含您的檔案路徑,您就完成了:

// Import classes:

//import com.cloudmersive.client.invoker.ApiClient;

//import com.cloudmersive.client.invoker.ApiException;

//import com.cloudmersive.client.invoker.Configuration;

//import com.cloudmersive.client.invoker.auth.*;

//import com.cloudmersive.client.ConvertApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey

ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");

Apikey.setApiKey("YOUR API KEY");

// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)

//Apikey.setApiKeyPrefix("Token");

ConvertApi apiInstance = new ConvertApi();

File imageFile = new File("/path/to/inputfile"); // File | Image file to perform the operation on. Common file formats such as PNG, JPEG are supported.

try {

byte[] result = apiInstance.convertToWebP(imageFile);

System.out.println(result);

} catch (ApiException e) {

System.err.println("Exception when calling ConvertApi#convertToWebP");

e.printStackTrace();

}

每個 API 解決方案都可以從數十種常見的圖像格式進行轉換。為了您的友善,我在這裡提供了相容輸入格式的完整清單:

AAI,藝術,ARW,AVS,BPG,BMP,BMP2,BMP3,BRF,CALS,CGM,CIN,CMYK,CMYKA,CR2,CRW,CUR,CUT,DCM,DCR,DCX,DDS,DIB,DJVU,DNG, DOT、DPX、EMF、EPDF、EPI、EPS、EPS2、EPS3、EPSF、EPSI、EPT、EXR、FAX、FIG、FITS、FPX、GIF、GPLT、灰色、HDR、HEIC、HPGL、HRZ、ICO、ISOBRL、 ISBRL6、JBIG、JNG、JP2、JPT、J2C、J2K、JPEG/JPG、JXR、MAT、MONO、MNG、M2V、MRW、MTV、NEF、ORF、OTB、P7、PALM、PAM、PBM、PCD、PCDS、 PCL,PCX,PDF,PEF,PES,PFA,PFB,PFM,PGM,PICON,PICT,PIX,PNG,PNG8,PNG00,PNG24,PNG32,PNG48,PNG64,PNM,PPM,PSB,PSD,PTIF,PWB, RAD、RAF、RGB、RGB、RGF、RLA、RLE、SCT、SFW、SGI、SID、SUN、SVG、TGA、TIFF、TIM、UIL、VIFF、VICAR、VBMP、WDP、WEBP、WPG、X、XBM、 XCF、XPM、XWD、X3F、YCbCr、YCbCrA、YUV

繼續閱讀