1. ホーム
  2. Java

javaを使用してWebPをPNGに変換する

2022-02-28 06:20:10

WebPはGoogleの画像フォーマットで、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環境)


<スパン この記事では、3つ目の方法について説明します。

linux環境で、google libwebp-0.4.0 を luciad-webp-imageio-2962dd563583 ルートディレクトリに置き、CMakeをインストールし、cmakeを実行します。cmakeが終了したら、上記ルートディレクトリでmakeコマンドを実行すると、javaディレクトリとcディレクトリにそれぞれ.jarと.soファイルが生成されます。.jarを自分のjavaプロジェクトのパスにインポートし、.soファイルをシステムのjavaのパスに入れます。この時点で、あなたのJavaプロジェクトでimageioを使い、webp形式のファイルを読み書きできるようになります。


説明

動作環境:ubuntu

言語: java

例:webpからpngへ


<スパン ステップス

1:以下の3つのファイルパッケージをダウンロードします。

<スパン 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 project: luciad-webp-imageio-2962dd563583.zip 元のアドレスです。 https://bitbucket.org/luciad/webp-imageio/src 


<スパン 上記のリソースを考慮すると、ダウンロードするために壁を越える必要があり、比較的遅いです。私はcsdnに3つのファイルをアップロードしている、ダウンロードに0ポイント。

<スパン アドレス http://download.csdn.net/detail/geeklei/8161731


2: コンパイルして webp-imageio.jar と libwebp-imageio.so を取得する。

<スパン 1. Unzip 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が使える状態で、ルートディレクトリでcmake .コマンドを実行します。cmakeと. の間にスペースがあることに注意してください。の間にスペースがあります。

5. cmakeが終了し、makefileファイルが表示されたら、luciad-webp-imageio-2962dd563583のルートディレクトリで、makeコマンドを実行します。

<スパン 6. makeが終了すると、luciad-webp-imageio-2962dd563583のルートディレクトリのjavaフォルダとcフォルダに.jarと.soが表示されます。


<スパン 3つです。

<スパン 1. eclipse で webp-imageio.jar を自分の java プロジェクトにインポートします。

<スパン 2. libwebp-imageio.soをシステムのjavaのパスに入れる。その後、System.out.println(System.getProperty("java.library.path"));の文を使ってプロジェクト内のjavaパスを出力すれば、見逃すことはないでしょう。プリントアウトされた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 プロジェクトの作者に感謝します。 ルシアード また、私の質問に無我夢中で答えてくれたことに感謝します。


---------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------

今朝、誰かがコンパイルしたパッケージをプロジェクトにアップロードしているのを発見しました。私もテストはしていませんが、パッケージも共有します。元のアドレス: https://bitbucket.org/luciad/webp-imageio/downloads

csdnアドレス: http://download.csdn.net/detail/geeklei/8163329


中身は.jar .so .dll

Linux 32/64、Windows 32/64、その他をカバー。