广告
返回顶部
首页 > 资讯 > 精选 >Java图片批量压缩像素的实现方法是什么
  • 666
分享到

Java图片批量压缩像素的实现方法是什么

2023-06-22 00:06:35 666人浏览 独家记忆
摘要

Java图片批量压缩像素的实现方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。图片压缩大法为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法

Java图片批量压缩像素的实现方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

图片压缩大法

为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法依旧是很有必要的,额跑题了,不好意思,今天介绍的不是压缩算法,讲啥呢?主要讲讲如何通过 java 将图片进行压缩,尽可能的控制压缩损比,不仅仅是为了减少存储,其目的是快速呈现给用户,只有良好的体验,才会在当今这个急躁的年代减少流量的损失。

最近因为公司要需要xxx认证上传测试用例功能的具体截图、发现有大小限制、所以就进行了图片压缩,简单记录一下。

压缩前大小:

Java图片批量压缩像素的实现方法是什么

压缩后大小:

Java图片批量压缩像素的实现方法是什么

具体代码实现:

main方法测试:

 public static void main(String[] args) throws ioException {        String modpath = "C:\\Users\\Administrator\\Desktop\\鲲鹏认证\\test\\";        getFiles("C:\\Users\\Administrator\\Desktop\\鲲鹏认证\\测试用例清单", modpath, 160);//将图片压缩至100宽    }

文件大小处理

    public static void resizeImage(String srcPath, String desPath, int width, int height) throws IOException {        File srcFile = new File(srcPath);        Image srcImg = ImageIO.read(srcFile);        BufferedImage buffImg = null;        buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);        //使用TYPE_INT_RGB修改的图片会变色        buffImg.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);        String filePath="";        if (srcFile.getName().contains("#")) {             filePath = srcFile.getName().replace("#", "");        }else{            filePath=srcFile.getName();        }        ImageIO.write(buffImg, "PNG", new File(desPath + filePath));    }

获取目录文件信息

    public static void getFiles(String path, String modPath, int scaleSize) throws IOException {        ArrayList<String> files = new ArrayList<String>();        File file = new File(path);        File[] tempList = file.listFiles();        //循环读取目录下图片        for (int i = 0; i < tempList.length; i++) {            String filePath = tempList[i].getName();            if (tempList[i].isFile()) {                System.out.println("文件:" + filePath + "-" + tempList[i].getAbsolutePath().replaceAll("\\\\", "/"));                String[] imagePath = tempList[i].getAbsolutePath().replaceAll("\\\\", "/").split("/");                String imageNumber = null;                FileUtil.resizeImage(tempList[i].getAbsolutePath().replaceAll("\\\\", "/"), modPath, 160, 160);                files.add(tempList[i].toString());            }            if (tempList[i].isDirectory()) {                  System.out.println("文件夹:" + tempList[i]);            }        }        System.out.println(path + "下文件数量:" + files.size());    }

控制台目录压缩成功保存到盘符:

Java图片批量压缩像素的实现方法是什么

附:利用Graphics类如何进行压缩图像

Graphics类提供基本绘图方法,Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形、画字符串等。 这里不做一一赘述, 进重点介绍一下,利用Graphics类如何进行压缩图像。不多说直接上代码。

public static byte[] compressImage(byte[] imageByte, int ppi) {byte[] smallImage = null;int width = 0, height = 0; if (imageByte == null)return null; ByteArrayInputStream byteInput = new ByteArrayInputStream(imageByte);try {Image image = ImageIO.read(byteInput);int w = image.getWidth(null);int h = image.getHeight(null);// adjust weight and height to avoid image distortiondouble scale = 0;scale = Math.min((float) ppi / w, (float) ppi / h);width = (int) (w * scale);width -= width % 4;height = (int) (h * scale); if (scale >= (double) 1)return imageByte; BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);buffImg.getGraphics().drawImage(image.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);ByteArrayOutputStream out = new ByteArrayOutputStream();ImageIO.write(buffImg, "png", out);smallImage = out.toByteArray();return smallImage; } catch (IOException e) {log.error(e.getMessage());throw new RSServerInternalException("");}}

其实,关键点就两处

BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);buffImg.getGraphics().drawImage(image.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Java图片批量压缩像素的实现方法是什么

本文链接: https://www.lsjlt.com/news/301607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java图片批量压缩像素的实现方法是什么
    Java图片批量压缩像素的实现方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。图片压缩大法为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法...
    99+
    2023-06-22
  • Java图片批量压缩像素的实现方法
    目录图片压缩大法压缩前大小:压缩后大小:具体代码实现:附:利用Graphics类如何进行压缩图像总结图片压缩大法 为了防止用户流量的丢失,即使在5g 即将来临的情况下,压缩算法依旧是...
    99+
    2022-11-12
  • java 实现图片像素质量压缩与图片长宽缩放
    目录java 图片像素质量压缩与图片长宽缩放java 修改图片dpi(像素/大小)java 图片像素质量压缩与图片长宽缩放 今天找到的这个方法比以前项目用到的方法更好,这里记录下,方...
    99+
    2022-11-12
  • python批量压缩图像的完整步骤是什么
    这期内容当中小编将会给大家带来有关python批量压缩图像的完整步骤是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景今天在工作中,同事遇到一个上传图片的问题:系统要求的图片大小不能超过512KB。...
    99+
    2023-06-22
  • web前端图片压缩、方向纠正、预览、上传插件的方法是什么
    这篇文章主要讲解了“web前端图片压缩、方向纠正、预览、上传插件的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端图片压缩、方向纠正、预览...
    99+
    2022-10-19
  • css实现图片轮播的方法是什么
    今天小编给大家分享一下css实现图片轮播的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,在页面中创建对个im...
    99+
    2023-07-04
  • JS实现IE6下PNG图片透明的方法是什么
    JS实现IE6下PNG图片透明的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。和大家重点讨论一下用Javascript实现IE6...
    99+
    2022-10-19
  • Python基于域相关实现图像增强的方法是什么
    这篇文章主要讲解了“Python基于域相关实现图像增强的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python基于域相关实现图像增强的方法是什么”吧!介绍当在图像上训练深度神经...
    99+
    2023-06-26
  • Matlab中图像数字水印算法的原理与实现方法是什么
    本篇内容主要讲解“Matlab中图像数字水印算法的原理与实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Matlab中图像数字水印算法的原理与实现方法是什么”吧!基本原理图像数字水印...
    99+
    2023-07-06
  • Java在PPT中创建散点图的实现方法是什么
    这篇文章主要讲解了“Java在PPT中创建散点图的实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java在PPT中创建散点图的实现方法是什么”吧!创建图表前需要在Java程序中...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作