图片压缩工具,记录一下。

代码:

import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

/**
 * 图片压缩Utils*/
public class PicUtils {

    private static Logger logger = LoggerFactory.getLogger(PicUtils.class);

    /*public static void main(String[] args) throws IOException {
        byte[] bytes = FileUtils.readFileToByteArray(new File("D:\\test\\371386015451197440.jpg"));
        long l = System.currentTimeMillis();
        bytes = PicUtils.compressPicForScale(bytes, 300, "x");// 图片小于300kb
        System.out.println(System.currentTimeMillis() - l + "毫秒");
        FileUtils.writeByteArrayToFile(new File("D:\\test\\dd1.jpg"), bytes);
    }
*/
    /**
     * 根据指定大小压缩图片
     *
     * @param imageBytes  源图片字节数组
     * @param desFileSize 指定图片大小,单位kb
     * @param imageId     影像编号
     * @return 压缩质量后的图片字节数组
     */
    public static byte[] compressPicForScale(byte[] imageBytes, long desFileSize) {
        if (imageBytes == null || imageBytes.length <= 0 || imageBytes.length < desFileSize * 1024) {
            return imageBytes;
        }
        long srcSize = imageBytes.length;
        double accuracy = getAccuracy(srcSize / 1024);
        try {
            while (imageBytes.length > desFileSize * 1024) {
                ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);
                ByteArrayOutputStream outputStream = new ByteArrayOutputStream(imageBytes.length);
                Thumbnails.of(inputStream)
                        .scale(accuracy)
                        .outputQuality(accuracy)
                        .toOutputStream(outputStream);
                imageBytes = outputStream.toByteArray();
            }
            logger.info("【图片压缩】imageId={} | 图片原大小={}kb | 压缩后大小={}kb",
                     srcSize / 1024, imageBytes.length / 1024);
        } catch (Exception e) {
            logger.error("【图片压缩】msg=图片压缩失败!", e);
        }
        return imageBytes;
    }

    /**
     * 自动调节精度(经验数值)
     *
     * @param size 源图片大小
     * @return 图片压缩质量比
     */
    private static double getAccuracy(long size) {
        double accuracy;
        if (size < 900) {
            accuracy = 0.85;
        } else if (size < 2047) {
            accuracy = 0.6;
        } else if (size < 3275) {
            accuracy = 0.44;
        } else {
            accuracy = 0.4;
        }
        return accuracy;
    }

}

调用:

@Override
    public byte[] downloadHuawei(String imagePath) throws IOException{
        byte[] img = InputStream2ByteArray(imagePath);
        return PicUtils.compressPicForScale(img, 300);// 图片小于300kb
    }

    public byte[] InputStream2ByteArray(String filePath) throws IOException {
        InputStream in = new FileInputStream(filePath);
        byte[] data = toByteArray(in);
        in.close();
        return data;
    }

原文地址:https://www.cnblogs.com/wangquanyi/p/11640794.html

时间: 2024-10-29 08:40:09

图片压缩工具,记录一下。的相关文章

ImageOptim 图片压缩工具

下载地址:http://www.onlinedown.net/soft/175501.htm 下载地址(官网):http://imageoptim.com ? ImageOptim 图片压缩工具,能够对 png 和 jpeg 图片文件进行优化,他能找到最佳的压缩参数,并通过消除不必要的信息(如文件的 EXIF 标签和颜色配置文件等),优化后达到减小文件大小的效果. 使用方式:

PNG图片压缩工具推荐-----Pngyu

Cocos项目中会使用到大量PNG图片,PNG文件的大小通常占到发布包大小的90%左右,压缩PNG文件大小对减小发布包大小起到很关键的作用. 我们知道PNG文件大致可分为三种格式,分别是:PNG32.PNG24.PNG8.色彩丰富程度(画质)从高到低,文件大小也是从大到小.美术从PS.Maya等工具导出的图片通常都是PNG32格式,通常的做法是用Fireworks等工具间PNG32转成PNG8格式. 这里给大家推荐一个PNG图片压缩工具,名字叫:Pngyu.下载地址:http://nukesaq

一个好用的android图片压缩工具类

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">用了很久图片压缩,之前人们一直使用google的官方图片压缩方法</span> final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = tr

推荐一款图片压缩工具

如果你在工作中遇到过需要压缩图片的场景,比如: 网站上传图片大小有限制 图片太大,超过了邮件附件的限制 如果你是开发:减少图片体积,提升加载速度 如果你是新媒体作者:减少插图体积,提升文章打开速度 …… 现在这款 在线图片压缩工具 可能是你最需要的 docsmall有如下优势 页面简洁美观,无广告 上传下载速度都很快快 jpg.png压缩率很高 支持批量压缩.打包下载 放个截图感受一下 原文地址:https://www.cnblogs.com/houxiyang/p/docsmall-image

干货!6款使用量最高的在线图片压缩工具对比评测

目前市面上有很多在线图片压缩工具,给我们日常办公提供了十分的便利性,每款工具各有侧重 我们从界面美观性.操作便利度.知名度角度选取了选取了六款进行对比评测,这六款图片压缩工具分别为: 智图 TinyPNG iLoveIMG img.top Optimizilla docsmall 我们对上述六款产品在如下 9 个纬度进行了打分对比,这 9 个纬度分别为: 使用体验:从页面设计.动画效果.传输速度.压缩效果等层面比较综合的一个评价 最大文件数:单次可上传的最大文件数 单个图片体积:单个图片体积最大

cocos2dx-之图片压缩工具推荐

随着版本的第二次迭代,包体越来越大;随之而来的也就是下载量会有所影响;毕竟每增大一点包体大小,下载的玩家就会损失一小批; 但是我们的图片都经过美术压缩打包,依然包体不小; 最后发现是因为把图片都打包成plist格式,所以png的图片大小又一次增大了; PNGoo 这个软件可以再一次压缩,并且不破坏里面的位置,尽量保留原有图而不失真很多; 我们的软件包体硬生生缩小了1/4!! 软件我上传到博客园网盘了,地址如下: files.cnblogs.com/files/left69/PNG%E5%8E%8

图片压缩工具之grunt-contrib-imagemin

对页面进行优化时~免不了对使用的图片进行压缩~以便减小我们使用的图片的大小~这样就可以减少用户下载的文件大小,加快页面访问速度.Google Pagespeed最佳实践建议我们用 jpegtran 或 jpegoptim (仅限 Linux 平台) 对 jpeg/jpg 图片进行无损压缩,如果是 PNG 格式,则使用 OptiPNG 或 PNGOUT 压缩. 但是对于不同格式的图片,我们需要用pegtran/jpegoptim/OptiPNG/PNGOUT 等多种工具来分别压缩,这样对于前端开发

PHP裁剪图片插件记录

1.jcrop插件+php实现的图片上传与裁剪 demo下载地址:http://download.csdn.net/detail/lifuxiangcaohui/8647767 参考文章:http://www.oschina.net/code/snippet_155442_4865 2.利用jquery的imgAreaSelect插件实现图片裁剪示例 参考文章:http://www.cnblogs.com/mizzle/archive/2011/10/13/2209891.html 3.调用美图

图片压缩工具Thumbnailator的使用

Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量.同时还支持根据一个目录批量生成缩略图. package com.zspr.utils.img; import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import net.