java 压缩图片 图片转换为base64

/**
 * 根据指定大小压缩图片
 *
 * @param imagePath  源图片地址(网络地址)
 * @param desFileSize 指定图片大小,单位kb
 * @param imageId     影像编号
 * @return 压缩质量后的图片字节数组
 */

public static String compressPicForScale(String imagePath, long desFileSize, String imageId) {
    BASE64Encoder encoder = new BASE64Encoder();
    byte[] data = getBytesFromHost(imagePath);

    System.out.println("原始数据大小=======" + data.length);

    if (data.length < desFileSize * 1024) {
        return encoder.encode(data);
    }

    long srcSize = data.length;
    double accuracy = getAccuracy(srcSize / 1024);

    try {
        while (data.length > desFileSize * 1024) {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
            Thumbnails.of(inputStream)
                    .scale(accuracy)
                    .outputQuality(accuracy)
                    .toOutputStream(outputStream);
            data = outputStream.toByteArray();

        }
        logger.info("【图片压缩】imageId={} | 图片原大小={}kb | 压缩后大小={}kb",
                imageId, srcSize / 1024, data.length / 1024);
    } catch (Exception e) {
        logger.error("【图片压缩】msg=图片压缩失败!", e);
    }
    System.out.println("原始数据后=======" + data.length);

    return encoder.encode(data);
}

 

//将网络地址对应的图片转换为base64
public static String imageChangeBase64(String imagePath){
    InputStream inputStream = null;
    byte[] data = getBytesFromHost(imagePath);
    System.out.println("length======= " + data.length);

    // 加密
    BASE64Encoder encoder = new BASE64Encoder();
    return encoder.encode(data);
}
 /**
     * url :   图片路径  : 找到一张图片复制链接地址
     *       desFileSize 指定图片大小,单位kb
     *      * @param imageId     影像编号
     *      * @return 压缩质量后的图片字节数组
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("你还会或或或");
//        String url = "";
//        System.out.println(ImageUtil.imageChangeBase64(url));

        String s = compressPicForScale("https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1564025725&di=0c930fc21fbf99af3d731d74f9258631&src=http://photo14.zastatic.com/images/photo/8917/35665191/1313658915191.jpg", 2, "30");
       // System.out.println("压缩后数据大小" + s);

    }

 

成功效果: 

原始数据大小=======15768
原始数据后=======1858

你可能感兴趣的:(java 压缩图片 图片转换为base64)