国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

java 壓縮圖片(只縮小體積,不更改圖片尺寸)的示例

瀏覽:6日期:2022-08-22 10:37:55

1.情景展示

在調(diào)用騰訊身份證OCR接口的時(shí)候,由于要求圖片大小只能限制在1MB以內(nèi),這樣,就必須使用到圖片壓縮技術(shù)

2.代碼展示

/** * 圖片處理工具類 * @explain * @author Marydon * @creationTime 2019年9月3日上午10:14:17 * @version 1.0 * @since * @email marydon20170307@163.com */public class ImgUtils { /** * 壓縮圖片(通過(guò)降低圖片質(zhì)量) * @explain 壓縮圖片,通過(guò)壓縮圖片質(zhì)量,保持原圖大小 * @param quality * 圖片質(zhì)量(0-1) * @return byte[] * 壓縮后的圖片(jpg) * @throws */ public static byte[] compressPicByQuality(byte[] imgByte, float quality) {byte[] imgBytes = null;try { ByteArrayInputStream byteInput = new ByteArrayInputStream(imgByte); BufferedImage image = ImageIO.read(byteInput); // 如果圖片空,返回空 if (image == null) {return null; } // 得到指定Format圖片的writer(迭代器) Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName('jpeg'); // 得到writer ImageWriter writer = (ImageWriter) iter.next(); // 得到指定writer的輸出參數(shù)設(shè)置(ImageWriteParam ) ImageWriteParam iwp = writer.getDefaultWriteParam(); // 設(shè)置可否壓縮 iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); // 設(shè)置壓縮質(zhì)量參數(shù) iwp.setCompressionQuality(quality); iwp.setProgressiveMode(ImageWriteParam.MODE_DISABLED); ColorModel colorModel = ColorModel.getRGBdefault(); // 指定壓縮時(shí)使用的色彩模式 iwp.setDestinationType( new javax.imageio.ImageTypeSpecifier(colorModel, colorModel.createCompatibleSampleModel(16, 16))); // 開(kāi)始打包圖片,寫(xiě)入byte[] // 取得內(nèi)存輸出流 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); IIOImage iIamge = new IIOImage(image, null, null); // 此處因?yàn)镮mageWriter中用來(lái)接收write信息的output要求必須是ImageOutput // 通過(guò)ImageIo中的靜態(tài)方法,得到byteArrayOutputStream的ImageOutput writer.setOutput(ImageIO.createImageOutputStream(byteArrayOutputStream)); writer.write(null, iIamge, iwp); imgBytes = byteArrayOutputStream.toByteArray();} catch (IOException e) { System.out.println('write errro'); e.printStackTrace();}return imgBytes; }}

3.其它代碼

import org.apache.commons.codec.binary.Base64;

String imgBase64 = '';try { // 圖片大小超過(guò)1MB if (file.getSize()/1024 > 1024) {byte[] imgBytes = ImgUtils.compressPicByQuality(file.getBytes(),0.1F);imgBase64 = Base64.encodeBase64String(imgBytes); } else {imgBase64 = Base64.encodeBase64String(file.getBytes()); }} catch (IOException e1) { e1.printStackTrace();}

說(shuō)明:

生成的base64圖片沒(méi)有圖片格式頭,即:data:image/jpeg;base64,

4.增加前端代碼

/** * 拍照或選擇圖片 */this.uploadPicture = function () { // js 獲取文件對(duì)象 var fileObj = document.getElementById('file').files[0]; if (null == fileObj) {alert('圖像上傳失敗,請(qǐng)重試!'); } // TODO 顯示遮罩 // 創(chuàng)建form表單 var formFile = new FormData(); //加入文件對(duì)象 formFile.append('file', fileObj); // 創(chuàng)建XMLHttpRequest 對(duì)象 var xhr = new XMLHttpRequest(); xhr.open('post', baseUrl + '/weixin/facein/upImg3.do', true); xhr.onload = function () {var resData = JSON.parse(this.responseText)// 將返回?cái)?shù)據(jù)轉(zhuǎn)換成JSON對(duì)象var json = eval(’(’ + resData.data2 + ’)’);// 身份證識(shí)別成功if (json.ret == 0) { // TODO 將所需數(shù)據(jù)填充到頁(yè)面 } else { alert('識(shí)別失敗,請(qǐng)重試!' + json.msg);}document.getElementById('file').value = '';// TODO 隱藏遮罩 }; // 調(diào)用騰訊接口 xhr.send(formFile);};

以上就是java 壓縮圖片(只縮小體積,不更改圖片尺寸)的示例的詳細(xì)內(nèi)容,更多關(guān)于java 壓縮圖片的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
主站蜘蛛池模板: 岚皋县| 蒙城县| 万宁市| 泌阳县| 延长县| 集贤县| 巴彦淖尔市| 雷山县| 绥德县| 五台县| 大悟县| 犍为县| 罗城| 银川市| 屏东县| 莲花县| 苏尼特右旗| 普宁市| 玉门市| 南安市| 盐亭县| 金沙县| 嘉定区| 丰都县| 霍林郭勒市| 洛阳市| 陆丰市| 黄石市| 永吉县| 武强县| 栾城县| 嘉义市| 沙河市| 蒙城县| 乌恰县| 独山县| 元朗区| 确山县| 鄂尔多斯市| 河池市| 贺州市|