首页 > 编程语言 >java图片压缩

java图片压缩

时间:2024-02-20 10:23:10浏览次数:36  
标签:Exception scale return file 压缩 bytes File java 图片

/**
     * 压缩图片并返回字节数组
     * @param file
     * @return
     * @throws Exception
     */
    private byte[] compress(File file) throws Exception {
        File temp = new File(file.getAbsolutePath());
        // scale:大小
        // outputQuality:输出质量
        Thumbnails.of(file).scale(1f).outputQuality(0.1f).toFile(temp);
        return Files.readAllBytes(temp.toPath());
    }

    /**
     * 压缩图片并返回字节数组
     * @param bytes
     * @return
     * @throws Exception
     */
    private byte[] compress(byte[] bytes, Boolean original) throws Exception {
        // scale:大小
        // outputQuality:输出质量
        if (bytes.length < 1024*1024 || Objects.equals(original, Boolean.TRUE)) {
            return bytes;
        }
        File tempFile = File.createTempFile(UUID.randomUUID().toString(), ".jpeg");
        Thumbnails.of(new ByteArrayInputStream(bytes)).scale(1f).outputQuality(0.25f).toFile(tempFile);
        byte[] allBytes = Files.readAllBytes(tempFile.toPath());
        FileUtils.deleteQuietly(tempFile);
        return allBytes;
    }

 

标签:Exception,scale,return,file,压缩,bytes,File,java,图片
From: https://www.cnblogs.com/wj123bk/p/18022493

相关文章

  • Java项目计算程序执行时间方法
    一、总结1.1、使用System.currentTimeMillis();计算程序执行毫秒数 //开始时间1 longstartTime1=System.currentTimeMillis(); Thread.sleep(100); //结束时间1 longendTime1=System.currentTimeMillis(); //开始时间2 longstartTime2=System.current......
  • java.util.Optional 是 Java 8 引入的一个类,用于处理可能为 null 的值。它可以避免 Nu
    可以使用 Optional 来包装可能为 null 的值,然后通过一系列方法来处理这个值,例如 isPresent() 检查是否有值,orElse() 获取值或默认值,map() 对值进行转换等。这样可以更安全地处理可能为 null 的情况。 importjava.util.Optional;publicclassOptionalExample{  ......
  • Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
    写在开头Java的集合世界中主要由List,Set,Queue,Map构成,我们在之前的博文中已经学习了List,接下来我们继续学习Set集合。Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作HashSet作为Set容器的代表子类,HashSet经常被用到,我们通过源码去分析它【源码查看】public......
  • JavaSE的第六步 —— 运算符优先级问题以及类型转换
    一、运算符优先级一般来说不需要刻意去记这些运算符的优先级,当你对这些运算的先后顺序存在疑惑的时候,不需要多想什么,直接使用()将之括起来就好但大体上的优先级顺序还是需要了解一下的排在首位的就是括号运算符,无论什么时候,你都可以相信括号接下来的运算符就是①、[{一元运算......
  • 对于压缩原理和部分压缩方法的认识(《程序是怎样跑起来的》第6章)
    在阅读过后《程序是怎样跑起来的》第6章后,我了解了关于文件压缩的相关知识。文件压缩指的就是将文件中重复的字符用“数据×出现次数”的方式表达出来,就如书中所说的AAABBDDFFF这样10个字符用A×3+B×2+D×2+F×3=A3B2D2F3来表示,这是RLE算法的压缩方式,但是这种算法也存在一定的缺陷......
  • 深入理解 Java 方法重载与递归应用
    Java方法重载方法重载允许在同一个类中定义多个具有相同名称的方法,但参数列表必须不同。语法:returnTypemethodName(parameter1,parameter2,...,parameterN){//方法体}示例:publicclassMain{//重载add方法,支持int和double类型参数staticinta......
  • java中file转字符串,字符串输出为文件
     读取文件转为字符串: //输入文件File类型,输出字符串 publicstaticStringfileToString(Filefile){ InputStreamis=null; ByteArrayOutputStreambos=newByteArrayOutputStream(); byte[]buffer=newbyte[1024]; inttemp=-1; try{ is=newFi......
  • JAVA基础-理解重载和重写
    1.Java的方法重载(Overload):就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。也就是说在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通......
  • JavaScript 内置 Number 类型在处理浮点数时的精度问题 是如何造成的?
    JavaScript内置的Number类型在处理浮点数时的精度问题主要是由以下原因造成的:IEEE754浮点数标准:JavaScript中的数字是基于IEEE754标准实现的双精度浮点数(64位),其中:最高1位为符号位(0表示正数,1表示负数)。接下来的11位用于存储指数部分(范围大约从-1022到1023)。剩余的......
  • 《程序是怎样跑起来的》第六章:亲自尝试压缩数据
    这本书的第六章中,作者矢泽久雄引领我们进入了数据压缩的神秘世界。数据压缩,对于我们日常生活和工作来说是一个不可或缺的技术。随着信息爆炸的时代,数据量正以惊人的速度增长。不论是存储空间还是网络带宽,都在面临前所未有的压力。因此,如何高效地管理和传输这些数据成为了一个亚待......