成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術文章
文章詳情頁

Java 實現圖片壓縮的兩種方法

瀏覽:51日期:2022-08-25 09:28:48

問題背景。

典型的情景:Nemo社區中,用戶上傳的圖片免不了要在某處給用戶做展示。

如用戶上傳的頭像,那么其他用戶在瀏覽該用戶信息的時候,就會需要回顯頭像信息了。

用戶上傳的原圖可能由于清晰度較高而體積也相對較大,考慮用戶流量帶寬,一般而言我們都不會直接體積巨大的原圖直接丟給用戶讓用戶慢慢下載。

這時候通常我們會在服務器對圖片進行壓縮,然后把壓縮后的圖片內容回顯給用戶。

壓縮方案:

這里主要找了兩個java中常用的圖片壓縮工具庫:Graphics和Thumbnailator。

1、Graphics:

/** * compressImage * * @param imageByte * Image source array * @param ppi * @return */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);

2、Thumbnailator:

/** * compressImage * * @param path * @param ppi * @return */public static byte[] compressImage(String path, int ppi) {byte[] smallImage = null; try { ByteArrayOutputStream out = new ByteArrayOutputStream();Thumbnails.of(path).size(ppi, ppi).outputFormat('png').toOutputStream(out);smallImage = out.toByteArray();return smallImage; } catch (IOException e) {log.error(e.getMessage());throw new RSServerInternalException(''); }}

實際測試中,批量的情境下,后者較前者更快一些。

以上就是Java 實現圖片壓縮的兩種方法的詳細內容,更多關于Java 圖片壓縮的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 国产禁女女网站免费看 | 国产自在线观看 | 欧美成人手机视频免费播放 | 无遮挡一级毛片私人影院 | 高清成人爽a毛片免费网站 高清大学生毛片一级 | 亚欧人成精品免费观看 | 亚洲欧美日韩国产精品影院 | 在线观看免费视频国产 | 亚洲欧美视频一级 | 中文字幕亚洲一区二区va在线 | 亚洲国产精品第一区二区 | 久久精品一区二区三区不卡牛牛 | 成 人 在 线 免费 8888 www | 成人精品视频在线 | 国内国语一级毛片在线视频 | 最近中文字幕免费视频 | 欧美日韩在线视频不卡一区二区三区 | 国产精品分类视频分类一区 | 男女男免费视频网站国产 | 久久丁香 | 91久久香蕉国产线看 | 一级毛片在线观看视频 | 萌白酱福利视频在线网站 | 中文字幕在线成人免费看 | 美女黄频网站 | 久草在线免费资源 | 国产大片在线观看 | 综合另类| 国产精品久久久久三级 | 成人亚洲精品7777 | 免费一级大毛片a一观看不卡 | 久久久久久国产视频 | 成年人午夜网站 | 深夜福利国产 | 九九99香蕉在线视频免费 | 在线视频中文字幕 | 日韩欧美一级毛片精品6 | 全部aⅴ极品视觉盛宴精品 全部免费a级毛片 | 老湿菠萝蜜在线看 | 亚洲精品日韩专区在线观看 | 国产成人免费在线视频 |