java webp_Java图片转换Webp格式

这个Java程序演示了如何将URL上的图片转换为Webp格式。它首先从URL下载图片,然后使用cwebp工具将其转换为Webp格式,支持设置图片质量。通过`saveUrlAs`方法保存图片,`convertToWebp`方法执行转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packageexample;import java.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.logging.Level;importjava.util.logging.Logger;public classImageFormatConverter {private static Logger log = Logger.getLogger(String.valueOf(ImageFormatConverter.class));public static booleanconvertFromUrlToWebp(String fileUrl,String outPutFile,Integer quality) {//首先从url获得源文件

File file = saveUrlAs(fileUrl,outPutFile,"");

String filePath= file.getPath()+File.separator+"xxx.png";returnconvertToWebp(filePath);

}public static booleanconvertToWebp(String inputFile, String outputFile) {return convertToWebp(inputFile, outputFile, 75);

}public static booleanconvertToWebp(String inputFile, String outputFile, Integer quality) {if (!newFile(inputFile).exists()) {return false;

}/*if (!new File(outputFile).exists()) {

new File(outputFile).mkdirs();

}*/

returnexecuteCWebp(inputFile, outputFile, quality);

}/*** execute cwebp command:cwebp [options] input_file -o output_file.webp*/

/***

*@paraminputFile

* 原图片路径

*@paramoutputFile

* webp路径

*@paramquality

* 图片质量1-100

*@return

*/

private static booleanexecuteCWebp(String inputFile, String outputFile, Integer quality) {boolean result = false;

Class cl= ImageFormatConverter.class;//换成相应的路径

String cwebpPath = cl.getResource("/META-INF/libwebp-0.4.1-rc1-windows-x64/bin/cwebp.exe").getPath();

System.out.println("cwebpPath=" +cwebpPath);try{

StringBuilder command= newStringBuilder(cwebpPath);

command.append(" -q " + (quality == 0 ? 75: quality));

command.append(" " +inputFile);

command.append(" -o " +outputFile);

Runtime.getRuntime().exec(command.toString());

result= true;

}catch(Exception e) {

e.printStackTrace();

System.out.println(e.getMessage());

}returnresult;

}public static booleanconvertToWebp(String inputFile) {

String outputFile= inputFile.split("\\.")[0] + ".webp";return convertToWebp(inputFile, outputFile, 75);

}public static voidmain(String[] args) {

String inputFile= "https://desk-fd.zol-img.com.cn/t_s1920x1200c5/g2/M00/0B/0C/ChMlWV5g8MuIEW7tAAW1SrkHhDsAANkcALNw6MABbVi878.jpg";

String outputFile= "J:/文件暂存/jpg";if (convertFromUrlToWebp(inputFile, outputFile, 75)) {

System.out.println("convert ok~");

}else{

System.out.println("sth wrong happened");

}

}public staticFile saveUrlAs(String url,String filePath,String method){//System.out.println("fileName---->"+filePath);//创建不同的文件夹目录

File file=newFile(filePath);//判断文件夹是否存在

if (!file.exists())

{//如果文件夹不存在,则创建新的的文件夹

file.mkdirs();

}

FileOutputStream fileOut= null;

HttpURLConnection conn= null;

InputStream inputStream= null;try{//建立链接

URL httpUrl=newURL(url);

conn=(HttpURLConnection) httpUrl.openConnection();//以Post方式提交表单,默认get方式

if (method!=null&&!"".equals(method)){switch(method.toUpperCase()){case "GET":

conn.setRequestMethod("GET");break;case "POST":

conn.setRequestMethod("POST");break;

}

}

conn.setDoInput(true);

conn.setDoOutput(true);//post方式不能使用缓存

conn.setUseCaches(false);//连接指定的资源

conn.connect();//获取网络输入流

inputStream=conn.getInputStream();

BufferedInputStream bis= newBufferedInputStream(inputStream);//判断文件的保存路径后面是否以/结尾

if (!filePath.endsWith("/")) {

filePath+= "/";

}//写入到文件(注意文件保存路径的后面一定要加上文件的名称)

fileOut = new FileOutputStream(filePath+"xxx.png");

BufferedOutputStream bos= newBufferedOutputStream(fileOut);byte[] buf = new byte[4096];int length =bis.read(buf);//保存文件

while(length != -1)

{

bos.write(buf,0, length);

length=bis.read(buf);

}

bos.close();

bis.close();

conn.disconnect();

}catch(Exception e)

{

e.printStackTrace();

System.out.println("抛出异常!!");

}returnfile;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值