日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:34日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品国语| 国产精成人品2018| 午夜欧美视频| 麻豆极品一区二区三区| 福利视频一区| 亚洲欧美高清| 国产乱子精品一区二区在线观看 | 国产精品一区高清| 日本久久综合| 黄色成人精品网站| 国产欧美日韩一级| 久久香蕉国产| 日本久久二区| 欧美成人基地| 日韩av一区二区三区| 成人福利av| 日韩精品高清不卡| 色乱码一区二区三区网站| 国产精品美女| 麻豆中文一区二区| 国产精品日本欧美一区二区三区| 久久国产婷婷国产香蕉| 国产超碰精品| 91亚洲精品在看在线观看高清| 日本午夜大片a在线观看| 久久大逼视频| 国产91在线播放精品| 蜜桃伊人久久| 国产va免费精品观看精品视频| 欧美中文字幕| 精品国产亚洲日本| 蜜臀精品久久久久久蜜臀| 国产精品黄色片| 免费久久精品| 麻豆国产欧美日韩综合精品二区| 日韩视频精品在线观看| 免费在线观看一区| 午夜在线播放视频欧美| 国产成人精品福利| 日韩精品欧美大片| 亚洲福利精品| 国产精品日本一区二区三区在线| 极品裸体白嫩激情啪啪国产精品| 久久国产生活片100| 国产亚洲毛片在线| 美女福利一区二区三区| 国产日产精品_国产精品毛片 | 欧美日韩亚洲一区在线观看| 国产综合亚洲精品一区二| 国产欧美激情| 免费人成网站在线观看欧美高清| 国产suv精品一区| 视频国产精品| 免费视频亚洲| 高清日韩中文字幕| 欧美亚洲人成在线| 久久先锋影音| 欧美.日韩.国产.一区.二区| 九九久久国产| 91精品国产自产观看在线| 91久久中文| 四虎4545www国产精品| 麻豆精品av| 国产精品中文字幕制服诱惑| 亚洲小说春色综合另类电影| 国产综合色产| 日本高清不卡一区二区三区视频| 国产毛片精品| 日韩和欧美的一区| 日韩中文字幕一区二区三区| 99久久久久| 久久91导航| 福利在线免费视频| 精品精品99| 国产福利资源一区| 国产三级精品三级在线观看国产| 亚洲人成网站在线在线观看| 欧美在线综合| 国产精品三上| 日韩中文字幕一区二区三区| av成人国产| 成人av二区| 亚洲91久久| 欧美日韩在线二区| 神马久久午夜| 日韩在线第七页| 国产理论在线| 蜜臀国产一区| 亚洲福利免费| 国产婷婷精品| 一区二区国产在线观看| 亚洲视频二区| 日韩中出av| 日韩视频1区| 日本不卡的三区四区五区| 中文字幕一区二区三区四区久久| 久久www成人_看片免费不卡| 一区在线免费观看| 亚洲欧美日韩一区在线观看| 久久国产精品久久w女人spa| 亚洲综合日本| 在线精品视频一区| 日本一区二区中文字幕| 日本视频一区二区| 国产精品chinese| 国产一区二区三区成人欧美日韩在线观看| 精品国产乱码久久久| 国产精品不卡| 久久狠狠婷婷| 99国产精品| 亚洲一二av| 国产精品一区亚洲| 久久不卡国产精品一区二区| 国内精品伊人| 视频小说一区二区| 制服诱惑一区二区| 天堂精品久久久久| 国产精品17p| 日韩免费视频| 91精品观看| 日本va欧美va瓶| 国产精品久久久久久模特 | 日韩一区欧美| 国产综合欧美| 伊人国产精品| 国产精品v亚洲精品v日韩精品| 日本一二区不卡| 黄色成人91| 日韩国产欧美一区二区三区| 久久影院资源站| 今天的高清视频免费播放成人| 一区二区三区网站| 久久99精品久久久久久园产越南| 中文字幕一区久| 蜜臀91精品一区二区三区| 国产精品综合色区在线观看| 日韩av在线播放网址| 在线国产一区| 欧美日韩网址| 给我免费播放日韩视频| 午夜影院欧美| 欧美视频精品全部免费观看| 桃色av一区二区| 蜜臀国产一区二区三区在线播放| 国产精品探花在线观看| 日韩高清中文字幕一区二区| 亚洲精品护士| 国产精品xx| 男女男精品网站| 激情综合婷婷| 免费欧美在线视频| 国产一区二区三区四区五区传媒| 午夜国产一区二区| 国产精品白丝一区二区三区| 亚洲成人国产| 国产亚洲久久| 伊人久久婷婷| 国产精品欧美在线观看| 激情婷婷久久| 久久精品女人| 中文字幕亚洲精品乱码| 久久久久久一区二区| 亚洲精选久久| 日韩欧美一区二区三区在线视频| 亚洲精品福利| 肉色欧美久久久久久久免费看 | 国产伊人久久| 99国产精品99久久久久久粉嫩| 另类小说一区二区三区| 91久久黄色| sm久久捆绑调教精品一区| 少妇精品久久久一区二区三区| 久久久久免费| 91av一区| 亚洲综合不卡| 色88888久久久久久影院| 欧美日韩夜夜| 丝袜美腿一区二区三区| 日韩成人免费| 国产日韩精品视频一区二区三区| 在线 亚洲欧美在线综合一区| 精品日本视频| 中文字幕一区二区三区在线视频| 日韩中文在线播放| 国产精品美女在线观看直播| 综合激情一区| 在线视频亚洲| 欧洲av不卡| 久久精品五月| 日韩欧美中文字幕电影| av一区二区高清| 在线中文字幕播放| 国产精品密蕾丝视频下载| 亚洲毛片网站| 麻豆亚洲精品| 婷婷综合社区| 久久男女视频| 久久精品国产福利| 欧美日韩亚洲一区在线观看| 亚洲人成在线影院|