前言

webp是google推出的一种新型图片格式,相比于 传统的png/jpg图片有着更小体积的优势,在web中有着广泛的应用。由于webp格式推出比较晚, jdk 内置的图片编解码库对此并不支持。

网上给出的java环境解决方案往往需要手动在java.library.path中安装对应的动态链接库,windows是dll文件,linux是so文件。这对于开发部署非常不方便。

本文提供一种无需手动安装动态链接库,同时可以方便处理webp的解决方案

webp是谷歌的图片格式,java 类库imageio 是不支持此种格式的。目前除了在线转换以及工具以外,第三方类库转webp格式

大致有:

linux:google libwebp 既是类库也可以在命令行调用

python:python image library(pil)及其分支https://pypi.python.org/pypi/pil不太了解

java:luciad/webp-imageio windows / linux亲测可用

准备

先从github上面下载所需要的jar包

由于这个项目并未发布到maven中央仓库,所以需要手动导入本地jar包.

如果你用的是gradle,可以把jar包放入src/main/resource/libs目录,并在build.gradle中加入依赖

dependencies {

compile filetree(dir:'src/main/resources/libs',include:['*.jar'])

}

如果你用的是maven,可以把jar包放入${project.basedir}/libs目录,并在pom.xml中加入依赖

com.github.nintha

webp-imageio-core

{versoin}

system

${project.basedir}/libs/webp-imageio-core-{version}.jar

例子

完整代码见 ,以下为部分摘录

webp编码

public static void main(string args[]) throws ioexception {

string inputpngpath = "test_pic/test.png";

string inputjpgpath = "test_pic/test.jpg";

string outputwebppath = "test_pic/test_.webp";

// obtain an image to encode from somewhere

bufferedimage image = imageio.read(new file(inputjpgpath));

// obtain a webp imagewriter instance

imagewriter writer = imageio.getimagewritersbymimetype("image/webp").next();

// configure encoding parameters

webpwriteparam writeparam = new webpwriteparam(writer.getlocale());

writeparam.setcompressionmode(webpwriteparam.mode_default);

// configure the output on the imagewriter

writer.setoutput(new fileimageoutputstream(new file(outputwebppath)));

// encode

writer.write(null, new iioimage(image, null, null), writeparam);

}

webp解码

public static void main(string args[]) throws ioexception {

string inputwebppath = "test_pic/test.webp";

string outputjpgpath = "test_pic/test_.jpg";

string outputjpegpath = "test_pic/test_.jpeg";

string outputpngpath = "test_pic/test_.png";

// obtain a webp imagereader instance

imagereader reader = imageio.getimagereadersbymimetype("image/webp").next();

// configure decoding parameters

webpreadparam readparam = new webpreadparam();

readparam.setbypassfiltering(true);

// configure the input on the imagereader

reader.setinput(new fileimageinputstream(new file(inputwebppath)));

// decode the image

bufferedimage image = reader.read(0, readparam);

imageio.write(image, "png", new file(outputpngpath));

imageio.write(image, "jpg", new file(outputjpgpath));

imageio.write(image, "jpeg", new file(outputjpegpath));

}

关于webp-imageio-core项目

webp project of luciad这个项目提供了java上一个关于处理webp的可用实现,但是它需要开发者手动java.library.path中安装对应的动态链接库,非常不方便。qwong/j-webp项目作者为了解决这个问题,改进了对动态链接库的读取方式,把从java.library.path读取改成了从项目resource文件中读取(具体内容见com.luciad.imageio.webp.webp.loadnativelibrary方法)。

虽然qwong/j-webp项目解决了动态链接库依赖问题,但是它的作者并未对这些代码提供一个良好封装,毕竟开发者不希望在自己项目里面直接引入第三方包的源码,所以有了webp-imageio-core提供一个可用的jar包,只要导入项目即可使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

java webp 图片处理_Java处理Webp图片格式转换的示例代码相关推荐

  1. java输出格林威治时间_Java之格林威治时间格式转换成北京时间格式

    Java之格林威治时间格式转换成北京时间格式 /** * Copyright 2020. yaodouwang.com Studio All Right Reserved * * Create on ...

  2. java微信红包开发_java写的伪微信红包功能示例代码

    性能优化点: 1.使用int不使用double.(单位用分不用元)也省去了还要用math.round四舍五入,把double类型数据只留小数点后前两位. 2.random() 方法用于返回一个随机数, ...

  3. C# 图片格式转换的实例代码

    C# 图片格式转换的实例代码 这篇文章主要介绍了C# 图片格式转换的实例代码,文中讲解非常详细,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下 在日常工作中,经常需要不同格式的图片,有时还需要进 ...

  4. java 如何导出json文件_java导出json格式文件的示例代码

    本文介绍了java导出json格式文件的示例代码,分享给大家,具体如下: import java.io.File; import java.io.FileWriter; import java.io. ...

  5. Java EasyExcel在Web网站中读写Excel的方法及示例代码

    使用EasyExcel可以更容易简单在Web网站中读写Excel,本文主要介绍在Java Web网站中读写Excel方法及示例代码. 原文地址:Java EasyExcel在Web网站中读写Excel ...

  6. java课程设计图片浏览器_java课程设计图片浏览器

    [实例简介] 图片浏览器最基本的功能是能浏览一个目录中的所有图片,并可以点击浏览上一张图片或者下一张图片,还有对图片放大与缩小,或者翻转图片等操作,在这里,实现了图片的浏览功能,导航功能(下一张.上一 ...

  7. java 图片合并_Java如何实现图片的叠加与拼接操作

    关于Java实现图片的叠加与拼接的文章网络上确实很多,碰巧小编开发工作中也遇到这些问题,就做了简要的梳理,作为笔记以备不时之需. Java对图片的处理主要使用的是BufferedImage类. Buf ...

  8. JAVA绘制图片原理_java开发_图片截取工具实现原理

    先来看看效果: 测试一: 原图: 效果图: 测试二: 原图: 效果图: 代码部分: /** * */ package com.b510; import java.awt.rectangle; impo ...

  9. 如何在java中添加照片_Java如何将图片添加到PPT幻灯片中?

    在Java编程中,如何将图片添加到PPT幻灯片中? 注意:需要访问网址: , 下载一个Apache POI软件包.这里下载最新版本:poi-bin-3.17-20170915.tar.gz解压并全部导 ...

  10. java 图片生成器_Java实现的图片生成器

    一.本图片生成器具有以下功能特性: 1.可以设置图片的宽度.高度.外框颜色.背景色: 2.可以设置图片字体的大小.名称.颜色: 3.可以设置输出图片的格式,如JPEG.GIF等: 4.可以将图片存储到 ...

最新文章

  1. Shell case esac语句
  2. c++获取数组长度_灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?...
  3. first level cache check - User parameter /UI2/CACHE_DISABLE
  4. linux db2备份,db2实现备份
  5. 清除css,js,img的浏览器缓存
  6. Basic Calculator 基本计算器-Leetcode
  7. PHP7 pecl 安装 mongodb扩展 和 PHPLIB
  8. windows程序静默安装
  9. 数据链路层的介质访问控制协议
  10. [转]ISO镜像工具PowerISO和UltraISO制作ISO光盘镜像教程
  11. Django城市信息查询功能(3)
  12. ai面试的优缺点_AI面试需要注意哪些问题?
  13. ug筋板不能正确覆盖开放轮廓_安徽省六安市第一中学2017届高三上学期第二次月考地理【解析】...
  14. wincc 日报表(带注释)
  15. Android-VideoView启动页视频,8.0崩溃解决
  16. scp 解除链接问题的两个解决方案
  17. 谈谈对数据中台,数据治理,数据管理,数据资产管理相关内涵认知
  18. 2022年下半年网络规划设计师考试下午真题
  19. 联通的无限流量套餐,比移动好很多
  20. 关于购买阿里云服务器和域名之后需要做的事

热门文章

  1. VBA遍历文件夹下的文件并且合并工作簿到一个工作簿中
  2. Robotics Toolbox :(1)建立机器人模型
  3. 国开电大 财务报表分析 形考任务
  4. 期货开户对资金有要求(期货开户有条件吗)
  5. 猿大师VLC播放程序播放RTSP实时视频提示“系统找不到指定文件”
  6. 基于netvibes源码实现类似igoogle的个性化主页
  7. 一个留学生眼中的匹兹堡(图)
  8. 高位在前低位在后是啥意思_精喹禾灵原药报价在25.5万元/吨高位,草甘膦原药保持2.5万元/吨...
  9. 论文参考文献尾注引用方法
  10. 一个windows右键关联工具