首页 > 作文

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

更新时间:2023-04-04 01:54:57 阅读: 评论:0

目录
图片压缩大法压缩前大小:压缩后大小:具体代码实现:附:利用graphics类如何进行压缩图像总结

图片压缩大法

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

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

压缩前大小:

压缩后大小:

具体代码实现:

main方法测试:

 public static void main(string[] args) throws ioexception {        string modpath = "c:\\urs\\administrator\\desktop\\鲲鹏认证\\test\\";        getfiles("c:\\urs\\administrator\\desktop\\鲲鹏认证\\测试用例清单", modpath, 160);//将图片压缩至100宽    }

文件大小处理

/**     * @param srcpath 原图片路径     * @param despath 转换大小后图片路径     * @param width   转换后图片宽度     * @param height  转换后图片高度     */    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("#", "");        }el{            filepath=srcfile.getname();        }        imageio.write(buffimg, "png", new file(despath + filepath));    }

获取目录文件信息

/**     * @param scalesize 图片的修改比例,目标宽度     */    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].getabsolut日电epath().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());    }

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

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

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

/** * compressimage *  * @param imagebyte *            image source array * @param ppi * @return */public static byte[] compressimage(byte[] ima脑筋急转弯大全gebyte, 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 >= (dou签名转换器ble) 1)return imagebyte; bufferedimage buffimg = new bufferedimage(width, h千古名诗eight, 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.tobyt南京的211earray();return smallimage; } catch (ioexception e) {log.error(e.getmessage());throw new rsrverinternalexception("");}}

其实,关键点就两处

bufferedimage buffimg = new bufferedimage(width, height, bufferedimage.type_int_rgb);buffimg.getgraphics().drawimage(image.getscaledinstance(width, height, image.scale_smooth), 0, 0, null);

总结

到此这篇关于java图片批量压缩像素实现的文章就介绍到这了,更多相关java图片批量压缩像素内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 01:54:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f789aa73c07d88851ab0956a7d71b0f2.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java图片批量压缩像素的实现方法.doc

本文 PDF 下载地址:Java图片批量压缩像素的实现方法.pdf

标签:图片   大小   鲲鹏   图像
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图