Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Convert WebP to PNG using java

Convert WebP to PNG using java

編輯:關於Android編程

WebP是谷歌的圖片格式,java 類庫imageio 是不支持此種格式的。目前除了在線轉換以及工具以外,第三方類庫轉換webp格式大致有:

1.linux:Google libwebp 既是類庫也可以在命令行調用

2.Python:Python Image Library(PIL)及其分支 https://pypi.python.org/pypi/PIL  不太了解

3.Java:luciad/webp-imageio https://bitbucket.org/luciad/webp-imageio/src   證實可用(linux環境下)

本文講述第三種方法:

在linux環境下,將google libwebp-0.4.0 放至 luciad-webp-imageio-2962dd563583 根目錄內,安裝CMake,在上述根目錄內執行 cmake . 命令,cmake完成後在上述根目錄下執行make命令。make完成會在java目錄和c目錄下分別生成.jar 和.so 文件。將.jar 導入自己的java項目路徑,將.so文件放至系統java路徑。此時在java項目中使用imageio即可讀寫webp格式文件。

說明:

操作環境:ubuntu

語言:java

實例:webp 轉png

步驟:

一:下載以下三個文件包

1.CMake 安裝包:cmake-3.1.0-rc2-Linux-i386.tar

2.Google webp 依賴庫:libwebp-0.4.0.tar.gz   原地址:https://developers.google.com/speed/webp/download?hl=zh-cN

3.luciad/webp-imageio工程:luciad-webp-imageio-2962dd563583.zip    原地址:https://bitbucket.org/luciad/webp-imageio/src

考慮到以上資源需要翻牆下載,比較慢。我已將三個文件傳至csdn,0分下載  。

地址:http://download.csdn.net/detail/geeklei/8161731

二:編譯得到 webp-imageio.jar 和 libwebp-imageio.so

1.解壓 luciad-webp-imageio-2962dd563583.zip。

2.將libwebp-0.4.0.tar.gz  解壓至 luciad-webp-imageio-2962dd563583 根目錄下。

3.將cmake-3.1.0-rc2-Linux-i386.tar 解壓。 cmake解壓即用,當然也可以自己用命令從鏡像源中下載安裝。

4.在確保cmake可用的前提下,在luciad-webp-imageio-2962dd563583 根目錄下 執行cmake . 命令。注意 cmake 和 . 之間有一個空格

5.cmake結束,看到了makefile文件, 在luciad-webp-imageio-2962dd563583 根目錄下 執行make 命令。

6.make結束,在luciad-webp-imageio-2962dd563583 根目錄下的java和c 文件夾內可以看到.jar 和.so

三:

1.將webp-imageio.jar導入 eclipse 中自己的java項目中。

2.將libwebp-imageio.so 放至系統java路徑中。可以再項目中利用 System.out.println(System.getProperty("java.library.path"));語句打印出java 路徑,避免遺漏。打印出的java路徑有多個,有部分重復。

3.在項目中使用 ImageIO即可讀寫webp格式文件了。

代碼:

File file1= new File("/home/geeklei/Desktop/640_tp.webp"); 
File file2= new File("/home/geeklei/Desktop/640a.png"); 
   
System.out.println(System.getProperty("java.library.path")); 
   
try { 
   
 BufferedImage im = ImageIO.read(file1); 
 ImageIO.write(im, "png", file2); 
    
    
} catch (IOException e) { 
 e.printStackTrace(); 
} 

感謝luciad/webp-imageio項目作者 Luciad 的努力,以及對我的提問的無私幫助。

今天早上發現有人把編譯好的包傳到項目裡面了。。我也沒測試,不過把包也共享出來吧。原地址:https://bitbucket.org/luciad/webp-imageio/downloads

csdn地址:http://download.csdn.net/detail/geeklei/8163329

裡面有 .jar .so .dll

涵蓋linux 32/64 windows  32/64 等版本

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved