色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Java 實現(xiàn)圖片壓縮的兩種方法

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

問題背景。

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

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

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

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

壓縮方案:

這里主要找了兩個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 實現(xiàn)圖片壓縮的兩種方法的詳細內(nèi)容,更多關(guān)于Java 圖片壓縮的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久久99亚洲精品久久 | 国产在线欧美日韩精品一区二区 | 亚洲欧美中文在线观看4 | 午夜在线播放免费人成无 | 男女午夜视频在线观看 | 看一级毛片一区二区三区免费 | 香蕉久久夜色精品国产 | 国内交换一区二区三区 | 久久这里只有精品免费播放 | 国产成人精品三级91在线影院 | 国产在线日韩在线 | 免费国产a国产片高清 | 天天看片欧美 | 99爱视频精品免视看 | 亚洲1314| 手机看片自拍自自拍日韩免费 | 在线视频一区二区日韩国产 | 中文字幕乱| 一级毛片aaa | 在线精品国产三级 | 国产自线一二三四2021 | 在线日本看片免费人成视久网 | 欧美精品久久一区二区三区 | 国产三级免费观看 | 日本三级久久 | 乱子伦农村xxxx | 亚洲视频一区在线观看 | 国语自产精品视频 | 久草在线 | 日本精品久久久久中文字幕 1 | 国产90后美女露脸在线观看 | 国产一区二区三区四区在线 | 男人免费看片 | 日韩欧美一区二区在线观看 | 亚洲综合欧美综合 | 国产精品一级片 | 中文字幕在线观看网址 | 91视频一88av| 91热成人精品国产免费 | 成人国产一区二区三区精品 | 亚洲制服欧美自拍另类 |