欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年10月12日 08:21:48   作者:淼淼之森  
這篇文章主要介紹了SpringBoot2.x 之整合 thumbnailator 圖片處理,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1、序

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

Thumbnailator 是一個優(yōu)秀的圖片處理的 Google 開源 Java 類庫,專門用來生成圖像縮略圖的,通過很簡單的 API 調(diào)用即可生成圖片縮略圖,也可直接對一整個目錄的圖片生成縮略圖。兩三行代碼就能夠從現(xiàn)有圖片生成處理后的圖片,且允許微調(diào)圖片的生成方式,同時保持了需要寫入的最低限度的代碼量??珊敛豢鋸埖恼f,它是一個處理圖片十分棒的開源框架。

支持:圖片縮放,區(qū)域裁剪,水印,旋轉(zhuǎn),保持比例。

Thumbnailator 官網(wǎng):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

主要實現(xiàn)了如下幾個接口作為測試:

@RestController
public class ThumbnailsController {
	@Resource
	private 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);
	}

	/**
	 * 圖片旋轉(zhuǎn) rotate(度數(shù)),順時針旋轉(zhuǎn)
	 * @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、功能實現(xiàn)

其實引入了這個 Thumbnailator 類庫后,代碼其實很少,因為我們只需要按照規(guī)則調(diào)用其 API 來實現(xiàn)即可。就個人而言,挺喜歡這種 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();
	}
}

測試:

3.2 指定比例縮放

/**
 * 指定比例縮放 scale(),參數(shù)小于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();
	}
}

測試:

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();
	}
}

測試:

3.4 圖片旋轉(zhuǎn)

/**
 * 圖片旋轉(zhuǎn) rotate(度數(shù)),順時針旋轉(zhuǎn)
 * 
 * @param resource 源文件路徑
 * @param rotate 旋轉(zhuǎn)度數(shù)
 * @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();
	}
}

測試:

3.5 圖片裁剪

/**
 * 圖片裁剪 sourceRegion()有多種構(gòu)造方法,示例使用的是sourceRegion(裁剪位置,寬,高)
 * 
 * @param resource 源文件路徑
 * @param p   裁剪位置
 * @param width  裁剪區(qū)域?qū)?
 * @param height 裁剪區(qū)域高
 * @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();
	}
}

測試:

說明:

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

2.outputQuality(float arg0) 圖片質(zhì)量

3.outputFormat(String arg0) 格式轉(zhuǎn)換

小結(jié)

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

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

到此這篇關(guān)于SpringBoot2.x 之整合 thumbnailator 圖片處理的文章就介紹到這了,更多相關(guān)SpringBoot2.x  圖片處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+vue實現(xiàn)登錄圖片驗證碼功能

    SpringBoot+vue實現(xiàn)登錄圖片驗證碼功能

    這篇文章主要給大家介紹一下如何SpringBoot+vue實現(xiàn)登錄圖片驗證碼功能,文中有詳細的代碼示例,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • IDEA 配合 Dockerfile 部署 SpringBoot 工程的注意事項

    IDEA 配合 Dockerfile 部署 SpringBoot 工程的注意事項

    這篇文章主要介紹了IDEA 配合 Dockerfile 部署 SpringBoot 工程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Spring Boot調(diào)用 Shell 腳本實現(xiàn)看門狗功能

    Spring Boot調(diào)用 Shell 腳本實現(xiàn)看門狗功能

    這篇文章主要介紹了Spring Boot調(diào)用 Shell 腳本實現(xiàn)看門狗功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot實現(xiàn)redis延遲隊列的示例代碼

    SpringBoot實現(xiàn)redis延遲隊列的示例代碼

    延時隊列場景在我們?nèi)粘I(yè)務(wù)開發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊列,本文就來介紹一下SpringBoot實現(xiàn)redis延遲隊列的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Java實現(xiàn)給網(wǎng)站上傳圖片蓋章的方法

    Java實現(xiàn)給網(wǎng)站上傳圖片蓋章的方法

    這篇文章主要介紹了Java實現(xiàn)給網(wǎng)站上傳圖片蓋章的方法,涉及java針對圖片的合成操作技巧,類似水印功能,需要的朋友可以參考下
    2015-07-07
  • Java輸出打印工具類封裝的實例

    Java輸出打印工具類封裝的實例

    下面小編就為大家?guī)硪黄狫ava輸出打印工具類封裝的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • spring boot整合CAS配置詳解

    spring boot整合CAS配置詳解

    這篇文章主要介紹了spring boot整合CAS配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringCloud之Hystrix的詳細使用

    SpringCloud之Hystrix的詳細使用

    熔斷機制是應(yīng)對雪崩效應(yīng)的一種微服務(wù)鏈路保護機制,當(dāng)扇出鏈路的某個微服務(wù)出錯不可用或者響應(yīng)時間太長,會進行服務(wù)的降級,進而熔斷該節(jié)點微服務(wù)的調(diào)用,快速返回錯誤的相應(yīng)信息,本文重點給大家介紹SpringCloud Hystrix使用,感興趣的朋友一起看看吧
    2022-01-01
  • Java設(shè)計模式之建造者模式

    Java設(shè)計模式之建造者模式

    這篇文章介紹了Java設(shè)計模式之建造者模式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Java生成一定規(guī)則遞增編號的示例代碼

    Java生成一定規(guī)則遞增編號的示例代碼

    項目需求中有時需要生成一定規(guī)則遞增編號,本文主要介紹了Java生成一定規(guī)則遞增編的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論