java对图片进行压缩处理
生活随笔
收集整理的這篇文章主要介紹了
java对图片进行压缩处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java對圖片進行壓縮處理
- 1、導入需要依賴的外部jar包gav
- 2、圖片進行裁剪
前言:
減少網絡開銷,節約存儲設備資源,同時獲取更好的交互體驗,同時又需要做到對圖片的品質和質量沒有太大的損失,需要對一些比較大的圖片資源進行壓縮處理。鑒于之前用到的一些開源的文件資源服務器,比如華為云obs,但是,其在圖片進行等比壓縮對圖片文件數據壓縮裁剪后質量太過于模糊,這樣不滿足用戶交互體驗,于是,需要程序對數據圖片進行無損化處理。
簡介:
本文主要是是針對原始圖片最大邊長進行最大限制,并根據原始圖片的比例,進行最小邊的大小設置,完成圖片的等比縮放壓縮。
1、導入需要依賴的外部jar包gav
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-imaging</artifactId><version>1.0-alpha2</version></dependency>說明:本案例對以上的依賴資源,主要是解決對圖片的尺寸大小進行獲取。
2、圖片進行裁剪
/*** 模型原始貼圖根據規則進行裁剪處理* @param localFilePath (本地圖片資源路徑)* @param ruleWidth (裁剪最長邊)*/private String cutPicture(String localFilePath,int ruleWidth){log.info("需要進行處理圖片信息,path:{},ruleName:{},ruleWidth:{}",localFilePath,ruleName,ruleWidth);String fileType = localFilePath.substring(localFilePath.lastIndexOf(".")+1);File file = new File(localFilePath);ImageInfo imageInfo = null;try {imageInfo = Imaging.getImageInfo(file);} catch (ImageReadException e) {log.error(e.getMessage(),e);return null;} catch (IOException e) {log.error(e.getMessage(),e);return null;}int height= imageInfo.getHeight();int width= imageInfo.getWidth();ruleWidth = ruleWidth > width ? width : ruleWidth;double ratew =0d;if(ruleWidth<width){ratew = (double)ruleWidth/(double)width;}int ruleHeight =height;if(ratew>0){ruleHeight = (int)(height*ratew);}log.info("width = {},height = {},ruleWidth={},ruleHeight={}", width, height,ruleWidth,ruleHeight);String fileName = file.getName();String pathHead = localFilePath.substring(0,localFilePath.lastIndexOf("/")+1);String filePrefix =pathHead+"new_"+fileName;log.info("處理后圖片存儲:{}",filePrefix);try(OutputStream outputStream = new FileOutputStream(new File(filePrefix));) {BufferedImage orgImage = ImageIO.read(new FileInputStream(file));BufferedImage buffImg = new BufferedImage(ruleWidth, ruleHeight,BufferedImage.TYPE_INT_RGB);Graphics g = buffImg.createGraphics();g.setColor(Color.white);g.fillRect(0, 0, ruleWidth, ruleHeight);g.drawImage(orgImage, 0, 0, ruleWidth, ruleHeight, null);g.dispose();ImageIO.write(buffImg,fileType,outputStream);return filePrefix;} catch (IOException e) {log.error(e.getMessage(),e);}return null;}總結
以上是生活随笔為你收集整理的java对图片进行压缩处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弥散阴影html,设计弥散阴影效果海报图
- 下一篇: Pytorch squeeze()的简单