Java實(shí)現(xiàn)按比例縮小圖片
本文實(shí)例為大家分享了Java實(shí)現(xiàn)按比例縮小圖片的具體代碼,供大家參考,具體內(nèi)容如下
使用spring注解上傳文件@RequestParam(value="", required=true),required為true時(shí)不能傳入空值,為false時(shí)反之;UploadFile.getOriginalFilename()獲取上傳的文件的文件名;System.nanoTime()返回當(dāng)前時(shí)間的納秒,用做文件名;FileUtils.writeByteArrayToFile()上傳文件到本地目錄;使用BufferedImage將圖片加載到內(nèi)存中,然后對(duì)圖片進(jìn)行修改如大小變換、圖片變灰、設(shè)置透明等。
效果圖:

HTML:
<div class="form-group">
?? ?<label class="col-lg-1 col-md-1 col-sm-2 col-xs-2 label-size"><span class="c-red">*</span>頭像:</label>
?? ?<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 img-padding-zero">
?? ??? ?<div>
?? ??? ??? ?<span id="Upload_ph" class="img-hide">
?? ??? ??? ??? ?<input type="file" title="" id="UploadFile" name="UploadFile" multiple="" class="img-input">
?? ??? ??? ?</span>
?? ??? ??? ?<span>
?? ??? ??? ??? ?<img alt="" src="${ctx}/UserManages/reveal_photo.do?file=tree.png">
?? ??? ??? ??? ?<a class="a-word" style="cursor:pointer;">上傳圖片</a>
?? ??? ??? ??? ?<a id="showApellation" class="a-word" style="font-size:12px;"></a> ? ? ? ? ? ?? ??
?? ??? ??? ?</span>
?? ??? ?</div>
?? ??? ?<div>
?? ??? ??? ?<img src="${ctx}/UserManages/reveal_photo.do?file=noImg.png" class="img-padding" width="198" height="198" alt="" id="imgOperPhoto1" onload="AutoResizeImage(198, 198, this)" title="用于頭像顯示">
?? ??? ??? ?<img src="${ctx}/UserManages/reveal_photo.do?file=noImg_tab.png" class="img-padding" width="28" height="40" alt="" id="imgOperPhoto3" title="用于列表顯示">
?? ??? ?</div>
?? ?</div>
</div>form表單提交到j(luò)ava:
@SuppressWarnings("unused")
@RequestMapping(value="/IntOpers")
private void IntOper(@RequestParam(value="UploadFile", required=true) MultipartFile UploadFile, PrintWriter pw, HttpServletRequest request) throws IOException {
?? ?String StrReturn = "error", FileName = "", ext = "";
?? ?long time = 0;
?? ?if (!UploadFile.isEmpty()) {
?? ??? ?if (UploadFile != null) {
?? ??? ??? ?String fullName = UploadFile.getOriginalFilename();
?? ??? ??? ?ext = fullName.substring(fullName.lastIndexOf("."));//獲取擴(kuò)展名稱
?? ??? ??? ?time = System.nanoTime();
?? ??? ??? ?FileName = time + ext;//設(shè)置文件保存的名稱
?? ??? ??? ?
?? ??? ??? ?//原圖
?? ??? ??? ?String upDir = "F:/java/upload-ssm";//文件上傳路徑
?? ??? ??? ?FileUtils.writeByteArrayToFile(new File(upDir, FileName), UploadFile.getBytes());
?? ??? ??? ?//縮小圖片
?? ??? ??? ?Image srcFile = ImageIO.read(new File(upDir + "/" + FileName));
?? ??? ??? ?BufferedImage tag = new BufferedImage(28, 40, BufferedImage.TYPE_INT_RGB);
?? ??? ??? ?tag.getGraphics().drawImage(srcFile, 0, 0, 28, 40, null);
?
?? ??? ??? ?String FileName_tab = time + "_tab" + ext;//設(shè)置文件保存的名稱
?? ??? ??? ?FileOutputStream out = new FileOutputStream(upDir + "/" + FileName_tab);
?? ??? ??? ?JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
?? ??? ??? ?JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);
?? ??? ??? ?
?? ??? ??? ?jep.setQuality(1f, true);
?? ??? ??? ?encoder.encode(tag, jep);
?? ??? ??? ?out.close();
?? ??? ??? ?StrReturn = "success";
?? ??? ?}
?? ?}
?? ?pw.write(StrReturn);
}以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解Java中使用ImageIO類對(duì)圖片進(jìn)行壓縮的方法
- java實(shí)現(xiàn)文件上傳下載和圖片壓縮代碼示例
- 解決java壓縮圖片透明背景變黑色的問題
- Java實(shí)現(xiàn)的上傳并壓縮圖片功能【可等比例壓縮或原尺寸壓縮】
- Java 實(shí)現(xiàn)圖片壓縮的兩種方法
- java實(shí)現(xiàn)創(chuàng)建縮略圖、伸縮圖片比例生成的方法
- Java圖片處理 (文字水印、圖片水印、縮放、補(bǔ)白)代碼實(shí)例
- Java 圖片壓縮實(shí)現(xiàn)思路及代碼
- java實(shí)現(xiàn)上傳圖片并壓縮圖片大小功能
- 使用Java生成jpg與壓縮圖片為jpg文件的代碼示例
相關(guān)文章
Springboot JPA打印SQL語句及參數(shù)的實(shí)現(xiàn)
在SpringBoot項(xiàng)目中調(diào)試和優(yōu)化數(shù)據(jù)庫操作是很常見的需求,本文主要介紹了Springboot JPA打印SQL語句及參數(shù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06
SpringBoot webSocket實(shí)現(xiàn)發(fā)送廣播、點(diǎn)對(duì)點(diǎn)消息和Android接收
這篇文章主要介紹了SpringBoot webSocket實(shí)現(xiàn)發(fā)送廣播、點(diǎn)對(duì)點(diǎn)消息和Android接收,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Mybatis返回值(resultType&resultMap)的具體使用
返回值屬性有兩種設(shè)置,一種是resultType,一種是resultMap,本文主要介紹了Mybatis返回值(resultType&resultMap)的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
Java Spring Boot消息服務(wù)萬字詳解分析
在實(shí)際項(xiàng)目開發(fā)中,有時(shí)需要與其他系統(tǒng)進(jìn)行集成完成相關(guān)業(yè)務(wù)功能,這種情況最原始做法是程序內(nèi)部相互調(diào)用,除此之外,還可以用消息服務(wù)中間件進(jìn)行業(yè)務(wù)處理,用消息服務(wù)中間件處理業(yè)務(wù)能夠提升系統(tǒng)的異步通信和擴(kuò)展解耦能力。Spring Boot對(duì)消息服務(wù)管理提供了非常好的支持2021-10-10
Java notify和notifyAll的區(qū)別和相同
本文主要介紹Java notify和notifyAll的知識(shí),這里整理詳細(xì)的資料來說明notify 和NotifAll的區(qū)別,有需要的小伙伴可以參考下2016-09-09

