項目中有個要求,對上傳服務(wù)器的圖片大小進(jìn)行判斷,大于500k的圖片要進(jìn)行壓縮處理,讓其小于500k后在上傳。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、辰溪網(wǎng)絡(luò)推廣、小程序制作、辰溪網(wǎng)絡(luò)營銷、辰溪企業(yè)策劃、辰溪品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供辰溪建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:jinyejixie.com
可以通過java api的ImageIO實現(xiàn)圖片壓縮,但是看了網(wǎng)上的博客普遍都說bug比較多,會有OOM內(nèi)存溢出的現(xiàn)象。
Thumbnails插件是Google的插件,能指定不同的參數(shù)進(jìn)行壓縮操作。
比如:寬高(size),縮放(scale),制定質(zhì)量比(outputQuality)等。
插件使用的jar包為:
thumbnailator-0.4.8.jar
代碼如下:
/** * * @param srcPath 原圖片地址 * @param desPath 目標(biāo)圖片地址 * @param desFileSize 指定圖片大小,單位kb * @param accuracy 精度,遞歸壓縮的比率,建議小于0.9 * @return */ public static String commpressPicForScale(String srcPath,String desPath, long desFileSize , double accuracy){ try { File srcFile = new File(srcPath); long srcFilesize = srcFile.length(); System.out.println("原圖片:"+srcPath + ",大小:" + srcFilesize/1024 + "kb"); //遞歸壓縮,直到目標(biāo)文件大小小于desFileSize commpressPicCycle(desPath, desFileSize, accuracy); File desFile = new File(desPath); System.out.println("目標(biāo)圖片:" + desPath + ",大小" + desFile.length()/1024 + "kb"); System.out.println("圖片壓縮完成!"); } catch (Exception e) { e.printStackTrace(); } return desPath; } public static void commpressPicCycle(String desPath , long desFileSize, double accuracy) throws IOException{ File imgFile = new File(desPath); long fileSize = imgFile.length(); //判斷大小,如果小于500k,不壓縮,如果大于等于500k,壓縮 if(fileSize <= desFileSize * 500){ return; } //計算寬高 BufferedImage bim = ImageIO.read(imgFile); int imgWidth = bim.getWidth(); int imgHeight = bim.getHeight(); int desWidth = new BigDecimal(imgWidth).multiply( new BigDecimal(accuracy)).intValue(); int desHeight = new BigDecimal(imgHeight).multiply( new BigDecimal(accuracy)).intValue(); Thumbnails.of(desPath).size(desWidth, desHeight).outputQuality(accuracy).toFile(desPath); //如果不滿足要求,遞歸直至滿足小于1M的要求 commpressPicCycle(desPath, desFileSize, accuracy); }
然后壓縮圖片大小:
commpressPicForScale(filePath, filePath, 500, 0.8);
壓縮完成:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
當(dāng)前名稱:使用Thumbnails實現(xiàn)圖片指定大小壓縮
當(dāng)前鏈接:http://jinyejixie.com/article24/pggece.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、域名注冊、面包屑導(dǎo)航、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)