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   原地址:

hl=zh-cN">https://developers.google.com/speed/webp/download?hl=zh-cN

3.luciad/webp-imageioproject: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 等版本号

Convert WebP to PNG using java的更多相关文章

  1. Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.Ill

    异常信息如下: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value ...

  2. spring mvc出现 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endtime'

    在使用spring mvc中,绑定页面传递时间字符串数据给Date类型是出错: Failed to convert property value of type [java.lang.String] ...

  3. Cannot convert 0 of type class java.lang.Integer to class java.lang.Boolean

    org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp thre ...

  4. 【spring mvc】后台API查询接口,get请求,后台Date字段接收前台String类型的时间,报错default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createDate';

    后台API查询接口,get请求,后台Date字段接收前台String类型的时间筛选条件 后台接口接收 使用的实体 而createDate字段在后台实体中是Date类型 报错信息: org.spring ...

  5. Java 异常 Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'

    查询时发送给服务器的日期的字符串格式:yyyy-MM-dd HH:mm:ss 服务器接收到日期的字符串之后,向 MySQL 数据库发起查询时,因为没有指定日期时间格式,导致字符串数据不能正确地转换为日 ...

  6. How to convert webp to png/jpg/gif in MacOS

    Environment I'm using OS X 10.11.4 and have homebrew 1.0.5 installed. Introduction I recently downlo ...

  7. message [Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property

    springmvc前台字符串,后台Date类型字段.时间强转失败 数值:18年12月31日 15:43:21 解决方法,给时间字段加注释 @DateTimeFormat(pattern = " ...

  8. [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'beginTime';

    依照https://stackoverflow.com/questions/23702041/failed-to-convert-property-value-of-type-java-lang-st ...

  9. Failed to convert property value of type 'java.util.LinkedHashMap' to required type 'java.util.Map' for property 'filters'

    在使用shiro的自定义filter出现的问题 <property name="filters"> <util:map> <entry key=&qu ...

随机推荐

  1. 在linux中启动mysql服务的命令

    用reboot命令重启linux服务器之后会导致mysql服务终止,也就是mysql服务没有启动.必须要重启mysql服务,否则启动jboss时会 报有关数据库mysql方面的错误. 命令如下: 第一 ...

  2. [bzoj3158]千钧一发——二分图+网络流

    题目 传送门 题解 很容易建立模型,如果两个点不能匹配,那么连一条边,那么问题就转化为了求一个图上的最大点权独立集. 而我们可以知道: 最大点权独立集+最小点权覆盖集=总权值. 同时最小点权覆盖在一般 ...

  3. C程序编译过程浅析【转】

    转自:http://blog.csdn.net/koudaidai/article/details/8092647 前几天看了<程序员的自我修养——链接.装载与库>中的第二章“编译和链接” ...

  4. Linux下用gSOAP开发Web Service服务端和客户端程序(一)

    1.功能说明: 要开发的Web Service功能非常简单,就是一个add函数,将两个参数相加,返回其和. 2.C版本的程序: (1)头文件:SmsWBS.h,注释部分不可少,url部分的IP必须填写 ...

  5. 使用函数方式生成UUID

    1.默认生成的UUID是有 “-” 分隔符的 例如: public static void main(String[] args){ String uuid = UUID.randomUUID().t ...

  6. Android 各种功能代码收集

    1.分享图片等文件到单个指定微信好友 /** * 分享信息到朋友 * * @param file * 假如图片的路径为path,那么file = new File(path); */ private ...

  7. (12)C#枚举,结构

    枚举 枚举类型是类似自定义的一个类,类里放着你自己定义的常量,关键字enum. enum Season{spring,summer,fall,winter} 想用这里的常量的话,首先把变量定义成 Se ...

  8. CF988 C. Equal Sums【map+pair/hash/任选两个序列,两个序列都除去他们中的一个数,使的总和相同】

    [链接]:CF988C [题意]:在n个序列中任选两个序列,两个序列都除去他们中的一个数,使的总和相同 [分析]:map<int,pair<int,int> > mp,从0~m ...

  9. servlet方法

    1.每一个Servlet都必须要实现Servlet接口,GenericServlet是个通用的.不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承于Generi ...

  10. 「kuangbin带你飞」专题十七 AC自动机

    layout: post title: 「kuangbin带你飞」专题十七 AC自动机 author: "luowentaoaa" catalog: true tags: - ku ...