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;
}
}