bitbucket.org/luciad/webp-imageioを Ubuntu で動作させましたが、Windows で動作させることができません。
Ubuntuで私がしていることは次のとおりです。
webp-imageio とlibwebpソース コードをダウンロードします (他のバージョンはgoogle webp ダウンロード リポジトリにあります)。
cmake を使用して libwebp と webp-imageio をコンパイルすると、webp-imageio に
CMakefile.txt
ファイルがあります。多分あなたはそれを変更する必要がありますか?次に、webp-imageio.jar
およびlibwebp-imageio.so
(.dll
Windowsに表示されます)を取得しますJava
libwebp-imageio.so
プロジェクトのネイティブ ライブラリの場所とwebp-imageio.jar
Java ビルド パスに配置します。次に、次のコードを実行します。
File file1= new File("/home/rtm/Desktop/xixi.webp");
File file2= new File("/home/rtm/Desktop/haha.png");
System.loadLibrary("webp-imageio");
try {
BufferedImage im = ImageIO.read(file1);
ImageIO.write(im, "png", file2);
} catch (IOException e) {
e.printStackTrace();
}
- 次に、cmake と mingw-w64 を使用して、windows (
webp-imageio.jar
およびlibwebp-imageio.dll
) でコンパイルします。ImageIO.read(file1);
ただし、 nullを返すため、これは機能しません。なぜ?
Windows用の私のコードは次のとおりです。
File file1 = new File("D://workspace//demo//Test//unnamed.webp");
File file2 = new File("D://workspace//demo//Test//xixi.png");
System.loadLibrary("webp-imageio");
try {
//FileUtils.copyFile(file1, file2);
BufferedImage im = ImageIO.read(file1);
ImageIO.write(im, "png", file2);
} catch (Exception e) {
e.printStackTrace();
}
例外スタックは次のとおりです。
java.lang.IllegalArgumentException: image == null!
at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(Unknown Source)
at javax.imageio.ImageIO.getWriter(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)