用的hutool工具类
import cn.hutool.core.util.ZipUtil;
批量多张图片进行压缩。我这边是将上传到华为云的图片进行批量打包压缩。
//图片批量压缩
@Test
public void getZipTest(){//获取图片http地址
String a = "http://XXXXX/file/img22081678989401.png";
String aa = "http://XXXXX/file/img22081663148040.png";
//组装
List<String> list = new ArrayList<String>();
list.add(a);
list.add(aa);
String[] strings = list.stream().toArray(String[]::new);List<InputStream> inputStreamList = new ArrayList<InputStream>();
for(String i: list){
InputStream inputStream = QrCodeUtils.stringToInputStream(i);
inputStreamList.add(inputStream);
}//将图片转为图片源
InputStream [] inputStreams = inputStreamList.stream().toArray(InputStream[]::new);//定义临时输出流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//压缩方法
ZipUtil.zip(outputStream,strings,inputStreams);//转流方式
ByteArrayInputStream result = new ByteArrayInputStream(outputStream.toByteArray());
//然后就可以调用云服务的上传文件流的方式上传了fileUploadService
}
主要的方法就是ZipUtil.zip()。
压缩后这样的,图片都在文件夹内
以上解压的主要流程就结束了。
----------------------------QrCodeUtils--------------------------
使用的自定义工具类:
QrCodeUtils.stringToInputStream(i);
QrCodeUtils这个是我自己定义的一个类,主要是进行图片的一些流转换,如下:
/** * 将图片转为输入流 * @param image * @return */ public static InputStream stringToInputStream(String image){ URL urlfile = null; try { urlfile = new URL(image); } catch (MalformedURLException e) { e.printStackTrace(); } InputStream inStream = null; try { inStream = urlfile.openStream(); } catch (IOException e) { e.printStackTrace(); } return inStream; }
具体自定义二维码的工具类QrCodeUtils地址:Java之~hutool二维码工具类自定义QrCodeUtils,图片输入输出流转换_萍宝儿的博客-CSDN博客