我让bitbucket.org/luciad/webp-imageio在 Ubuntu 中工作,但我无法让它在 Windows 中工作。
这是我在 Ubuntu 中所做的:
下载 webp-imageio 和libwebp源代码(其他版本可以在google webp 下载存储库中找到)。
使用cmake编译libwebp和webp-imageio,webp-imageio中有一个
CMakefile.txt
文件。也许你需要修改它?然后你会得到webp-imageio.jar
andlibwebp-imageio.so
(它将.dll
在 Windows 中)放入
libwebp-imageio.so
java 项目 Native 库位置和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();
}
webp-imageio.jar
然后,我使用 cmake 和 mingw-w64,在 windows (和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)