图片压缩
1.采用 Thumbnail 公共类
2.采用 Thumbnail 方法
Thumbnails.of(inputStream) // of(filePath/inputStream) 使用源图片的路径或流,生成缩略图构造器
.sourceRegion(0, 0, imageWidth, imageHeight) // 截取源图中需要用于压缩的区域
.size(width, height) // 设置缩略图的高度和宽度
.keepAspectRatio(true) // 是否保持原来的长宽比
.toOutputStream(outputStream); // 将生成的缩略图直接一输出流的形式输出;
// .toFile(fileUrl); //或 将缩略图以图片文件的形式输出;
3.解决bug
该方法爆出的UnsupportedFormatException:No suitable ImageReader 异常;
本人反复的出现这个异常,痛定思痛,查找各种资料,最后发现,
异常的真正原因是:原图文件被破坏,前面的inputstream已经被破坏了。
解决办法:使用base64 String 形式图片(String imageString),再解析为inputstream ,防止原图被破坏,压缩前加上代码如下;
InputStream inputStream = new ByteArrayInputStream(fastDFSUtil.generateImage(imageString));
注:fastDFSUtil.generateImage(imageString),将base64string 图片解码,转化为byte[]。