电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot2.x 之整合 thumbnailator 圖片處理的示例代碼

瀏覽:7日期:2023-04-18 16:26:17

1、序

在實際項目中,有時為了響應速度,難免會對一些高清圖片進行一些處理,比如圖片壓縮之類的,而其中壓縮可能就是最為常見的。最近,阿淼就被要求實現這個功能,原因是客戶那邊嫌速度過慢。借此機會,阿淼今兒就給大家介紹一些一下我做這個功能時使用的 Thumbnailator 庫。

Thumbnailator 是一個優秀的圖片處理的 Google 開源 Java 類庫,專門用來生成圖像縮略圖的,通過很簡單的 API 調用即可生成圖片縮略圖,也可直接對一整個目錄的圖片生成縮略圖。兩三行代碼就能夠從現有圖片生成處理后的圖片,且允許微調圖片的生成方式,同時保持了需要寫入的最低限度的代碼量。可毫不夸張的說,它是一個處理圖片十分棒的開源框架。

支持:圖片縮放,區域裁剪,水印,旋轉,保持比例。

Thumbnailator 官網:https://code.google.com/p/thumbnailator/

有了這玩意,就不用在費心思使用 Image I/O API,Java 2D API 等等來生成縮略圖了。

廢話少說,直接上代碼,先來看一個最簡單的例子:

2、代碼示例

2.1. 新建一個springboot項目

2.2. 引入依賴 thumbnailator

<dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version></dependency>

2.3. controller

主要實現了如下幾個接口作為測試:

@RestControllerpublic class ThumbnailsController {@Resourceprivate IThumbnailsService thumbnailsService;/** * 指定大小縮放 * @param resource * @param width * @param height * @return */@GetMapping('/changeSize')public String changeSize(MultipartFile resource, int width, int height) {return thumbnailsService.changeSize(resource, width, height);}/** * 指定比例縮放 * @param resource * @param scale * @return */@GetMapping('/changeScale')public String changeScale(MultipartFile resource, double scale) {return thumbnailsService.changeScale(resource, scale);}/** * 添加水印 watermark(位置,水印,透明度) * @param resource * @param p * @param shuiyin * @param opacity * @return */@GetMapping('/watermark')public String watermark(MultipartFile resource, Positions p, MultipartFile shuiyin, float opacity) {return thumbnailsService.watermark(resource, Positions.CENTER, shuiyin, opacity);}/** * 圖片旋轉 rotate(度數),順時針旋轉 * @param resource * @param rotate * @return */@GetMapping('/rotate')public String rotate(MultipartFile resource, double rotate) {return thumbnailsService.rotate(resource, rotate);}/** * 圖片裁剪 * @param resource * @param p * @param width * @param height * @return */@GetMapping('/region')public String region(MultipartFile resource, Positions p, int width, int height) {return thumbnailsService.region(resource, Positions.CENTER, width, height);}}

3、功能實現

其實引入了這個 Thumbnailator 類庫后,代碼其實很少,因為我們只需要按照規則調用其 API 來實現即可。就個人而言,挺喜歡這種 API 的方式,簡潔,易懂,明了。

3.1 指定大小縮放

/** * 指定大小縮放 若圖片橫比width小,高比height小,放大 * 若圖片橫比width小,高比height大,高縮小到height,圖片比例不變 * 若圖片橫比width大,高比height小,橫縮小到width,圖片比例不變 * 若圖片橫比width大,高比height大,圖片按比例縮小,橫為width或高為height * * @param resource 源文件路徑 * @param width 寬 * @param height 高 * @param tofile 生成文件路徑 */public static void changeSize(String resource, int width, int height, String tofile) {try {Thumbnails.of(resource).size(width, height).toFile(tofile);} catch (IOException e) {e.printStackTrace();}}

測試:

SpringBoot2.x 之整合 thumbnailator 圖片處理的示例代碼

3.2 指定比例縮放

/** * 指定比例縮放 scale(),參數小于1,縮小;大于1,放大 * * @param resource 源文件路徑 * @param scale 指定比例 * @param tofile 生成文件路徑 */public static void changeScale(String resource, double scale, String tofile) {try {Thumbnails.of(resource).scale(scale).toFile(tofile);} catch (IOException e) {e.printStackTrace();}}

測試:

SpringBoot2.x 之整合 thumbnailator 圖片處理的示例代碼

3.3 添加水印

/** * 添加水印 watermark(位置,水印,透明度) * * @param resource 源文件路徑 * @param p 水印位置 * @param shuiyin 水印文件路徑 * @param opacity 水印透明度 * @param tofile 生成文件路徑 */public static void watermark(String resource, Positions p, String shuiyin, float opacity, String tofile) {try {Thumbnails.of(resource).scale(1).watermark(p, ImageIO.read(new File(shuiyin)), opacity).toFile(tofile);} catch (IOException e) {e.printStackTrace();}}

測試:

SpringBoot2.x 之整合 thumbnailator 圖片處理的示例代碼

3.4 圖片旋轉

/** * 圖片旋轉 rotate(度數),順時針旋轉 * * @param resource 源文件路徑 * @param rotate 旋轉度數 * @param tofile 生成文件路徑 */public static void rotate(String resource, double rotate, String tofile) {try {Thumbnails.of(resource).scale(1).rotate(rotate).toFile(tofile);} catch (IOException e) {e.printStackTrace();}}

測試:

SpringBoot2.x 之整合 thumbnailator 圖片處理的示例代碼

3.5 圖片裁剪

/** * 圖片裁剪 sourceRegion()有多種構造方法,示例使用的是sourceRegion(裁剪位置,寬,高) * * @param resource 源文件路徑 * @param p 裁剪位置 * @param width 裁剪區域寬 * @param height 裁剪區域高 * @param tofile 生成文件路徑 */public static void region(String resource, Positions p, int width, int height, String tofile) {try {Thumbnails.of(resource).scale(1).sourceRegion(p, width, height).toFile(tofile);} catch (IOException e) {e.printStackTrace();}}

測試:

SpringBoot2.x 之整合 thumbnailator 圖片處理的示例代碼

說明:

1.keepAspectRatio(boolean arg0) 圖片是否按比例縮放(寬高比保持不變)默認 true

2.outputQuality(float arg0) 圖片質量

3.outputFormat(String arg0) 格式轉換

小結

值得注意的是,若 png、gif 格式圖片中含有透明背景,使用該工具壓縮處理后背景會變成黑色,這是 Thumbnailator 的一個 bug,預計后期版本會解決。

代碼地址 :https://github.com/mmzsblog/mmzsblog-util/

到此這篇關于SpringBoot2.x 之整合 thumbnailator 圖片處理的文章就介紹到這了,更多相關SpringBoot2.x 圖片處理內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 动物麻醉机-数显脑立体定位仪-北京易则佳科技有限公司 | 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 智能楼宇-楼宇自控系统-楼宇智能化-楼宇自动化-三水智能化 | 上海三信|ph计|酸度计|电导率仪-艾科仪器| 早报网| 温州食堂承包 - 温州市尚膳餐饮管理有限公司| 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 欧景装饰设计工程有限公司-无锡欧景装饰官网| 实验室隔膜泵-无油防腐蚀隔膜泵-耐腐蚀隔膜真空泵-杭州景程仪器 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 碳纤维布-植筋胶-灌缝胶-固特嘉加固材料公司| 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 执业药师报名时间,报考条件,考试时间-首页入口 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 有声小说,听书,听小说资源库-听世界网 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 板式换热器_板式换热器价格_管式换热器厂家-青岛康景辉 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 便民信息网_家电维修,家电清洗,开锁换锁,本地家政公司 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) |