Thumbnails 压缩后反而变大

遇到的问题:
1.Thumbnails.scale效果会导致图片大小变大
  scale值
原图片格式 2 1 0.8 0.6 0.4 0.2
jpeg 明显变大 变大 变大 变大 明显变小 变大
png 变大 变小 变小 变小 变小 最小
png经过压缩 明显变大 不变 变小 变小 变小 最小
png未经过压缩 明显变大 明显变大 变大 变大 变小 变小
jpeg改为png 明显变大 明显变大 变大 变大 变大 变小
pngtopng 明显变大 明显变大 明显变大 明显变大 明显变大 变小
Thumbnails应该是存在bug,但是也一直没有更新版本,所以根据多次测试得来的结果:用jpg转成jpg效果最佳。所以当图片为png时,先改成jpg格式,再进行压缩。

 

public static String imgConvert(String tempDirPath, String fileName, String fileExt) throws IOException {
    	String srcPath = tempDirPath + fileName;  //原始图片路径
    	if("png".equals(fileExt)) {
    		
    		//生成新图片名称
    		SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            String fileString = df.format(new Date()) + "_" + new Random().nextInt(1000) + ".jpg";
            
            //新图片全路径
            String newJpg = tempDirPath + fileString; 
            
        	// 1、先转换成jpg  
            Thumbnails.of(srcPath).scale(1f).toFile(newJpg); 
            
            //2.jpg图片压缩
            Thumbnails.of(newJpg).scale(1f).outputQuality(0.25d).toFile(newJpg);
            
            //压缩成功后,删除png图片
            File f = new File(srcPath);
            f.delete();
            
            return fileString;
    	} else {
    		Thumbnails.of(srcPath).scale(1f).outputQuality(0.25d).toFile(srcPath);
    	}
    	return null;
    }

 

你可能感兴趣的:(java开发)