我成功地在Ubuntu中使用了 bitbucket.org/luciad/webp-imageio,但是我无法在Windows上使用它。
以下是我在Ubuntu中的操作步骤:
1. 下载webp-imageio和libwebp源代码(其他版本可以在google webp下载存储库中找到)。 2. 使用cmake编译libwebp和webp-imageio,在webp-imageio中有一个
以下是我在Ubuntu中的操作步骤:
1. 下载webp-imageio和libwebp源代码(其他版本可以在google webp下载存储库中找到)。 2. 使用cmake编译libwebp和webp-imageio,在webp-imageio中有一个
CMakefile.txt
文件。可能需要修改它。然后你将得到webp-imageio.jar
和libwebp-imageio.so
(在windows中将是.dll
)。
3. 将libwebp-imageio.so
放在Java项目本地库位置,并将webp-imageio.jar
放在Java构建路径中。
4. 然后运行下面的代码: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)