最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)

 更新時(shí)間:2022年10月21日 11:39:15   作者:yelangking1  
在java日常開(kāi)發(fā)中經(jīng)常遇到對(duì)圖片資源的操作需求,如壓縮、縮放、旋轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)的相關(guān)資料,需要的朋友可以參考下

前言

在我們的日常企業(yè)應(yīng)用開(kāi)發(fā)當(dāng)中,會(huì)碰到很多的圖片素材訪問(wèn)的場(chǎng)景。比如社交類應(yīng)用,您會(huì)在朋友圈中存放大量的圖片,還有一些在線旅游或者直播的行業(yè),那些圖片資源更是不勝枚舉,試想我們的用戶在移動(dòng)端或者網(wǎng)頁(yè)端上傳了一張512KB的圖片,如果我們?cè)诤笈_(tái)沒(méi)有加以處理就直接丟給前端展示,那對(duì)企業(yè)的帶寬和流量來(lái)說(shuō),無(wú)疑是一個(gè)巨大的災(zāi)難。因此,隨著訪問(wèn)人數(shù)的越來(lái)越多,存儲(chǔ)圖片的數(shù)量也越來(lái)越大,我們一定要對(duì)圖片進(jìn)行相應(yīng)的瘦身,減少它在網(wǎng)絡(luò)上傳輸?shù)拇笮?,也能提高系統(tǒng)的訪問(wèn)速度。

由此,本文將重點(diǎn)介紹在Java后臺(tái)開(kāi)發(fā)應(yīng)用當(dāng)中,使用thumbnailator來(lái)進(jìn)行圖片資源的裁剪、縮小等瘦身操作,通過(guò)Java實(shí)際編碼的方式加上實(shí)際圖片的裁剪能實(shí)操,讓您了解掌握thumbnailator瘦身方法。

一、Thumbnailator概況

1、Thumbnailator是什么?

Thumbnailator 是一個(gè)用來(lái)生成圖像縮略圖的 Java 類庫(kù),通過(guò)很簡(jiǎn)單的代碼即可生成圖片縮略圖,也可直接對(duì)一整個(gè)目錄的圖片生成縮略圖。

2、Thumbnailator能做什么?

Thumbnailator是一款高性能的java縮略圖類庫(kù)。支持的處理操作:圖片縮放,區(qū)域裁剪,水印,旋轉(zhuǎn),保持比例。

3、Thumbnailator 的github地址

Thumbnailator是托管在github上的一個(gè)開(kāi)源項(xiàng)目,github地址為:thumbnailator github地址

二、Thumbnailator具體使用步驟

1、使用Maven構(gòu)建,在Pom.xml中引入相關(guān)資源

<dependency>
	<groupId>net.coobird</groupId>
	<artifactId>thumbnailator</artifactId>
	<version>0.4.8</version>
</dependency>
 
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.11</version>
	<scope>test</scope>
</dependency>

2、創(chuàng)建一個(gè)指定高為160和寬為160的縮略圖

Thumbnails.of(new File("E:/ys/IMG_4004.JPG"))
    .size(160, 160)
    .toFile(new File("E:/ys/IMG_4004_160.JPG"));

注意:Thumbnails.of 也可以直接接受一個(gè)String類型的文件路徑,而不需要傳入一個(gè)File。這兩種形式都是Thumbnails支持的參數(shù)。原圖是5184*3456的5.51MB的照片

按照160*160裁剪后,生成的結(jié)果圖已經(jīng)變得非常小了,大小只占2.5kb,為什么這里的高度不是160呢?你可以思考一下,主要是因?yàn)椴眉魰r(shí)為了保持等比率縮小,因此就變成了107.

3、按比例縮放

@Test
public void test() throws IOException {
	Thumbnails.of("E:/ys/IMG_4004.JPG")
    .scale(0.5)
    .toFile("E:/ys/IMG_4004_scale0.5.jpg");
}

這里可以明顯的看到這里得到的結(jié)果圖片的高度和寬度都是原來(lái)的一半。scale參數(shù)的值從0-1,中間可以取小數(shù),表示百分比的意思。比如這里設(shè)置為0.5表示,表示高度和寬度按照50%來(lái)進(jìn)行縮放。

4、按照?qǐng)D片質(zhì)量裁剪

組件支持按照最終結(jié)果的質(zhì)量進(jìn)行縮放,通過(guò)設(shè)置outputQuality(d),d為一個(gè)0-1的值,也是一個(gè)百分比的數(shù)值。下面的代碼表示圖片大小保持不變,輸出質(zhì)量為原來(lái)的50%。

@Test
public void test3() throws IOException {
	Thumbnails.of("E:/ys/IMG_4004.JPG")
	.scale(1f)
    .outputQuality(0.3f)
    .toFile("E:/ys/IMG_4004_s1q0.3.jpg");
}

4、旋轉(zhuǎn)和添加水印效果

下面是thumbnails在旋轉(zhuǎn)和質(zhì)量輸出的比例控制,旋轉(zhuǎn)使用角度來(lái)進(jìn)行表示。

@Test
public void test8() throws IOException {
	BufferedImage watermarkImage = ImageIO.read(new File("E:/ys/yl.jpg"));
	Thumbnails.of(new File("E:/ys/IMG_4004.JPG"))
    .scale(0.5f)
    .rotate(180)//旋轉(zhuǎn)180度
    .watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.5f)
    .toFile(new File("E:/ys/IMG_4004_90.JPG"));
}

上圖生成出來(lái)的結(jié)果就是原圖旋轉(zhuǎn)了180度,然后在生成的圖片的右下角添加一個(gè)水印的效果。

其它更多API和例子可以參考:官方示例

三、總結(jié)

以上就是今天要講解的所有內(nèi)容,本文將重點(diǎn)介紹在Java后臺(tái)開(kāi)發(fā)應(yīng)用當(dāng)中,使用thumbnailator來(lái)進(jìn)行圖片資源的裁剪、縮小、旋轉(zhuǎn)、添加水印等基礎(chǔ)的裁剪操作,通過(guò)Java實(shí)際編碼的方式對(duì)實(shí)際圖片進(jìn)行裁剪,讓您了解并掌握thumbnailator瘦身方法。  

到此這篇關(guān)于如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)的文章就介紹到這了,更多相關(guān)Java Thumbnailator給圖片瘦身內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析

    SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析

    這篇文章主要介紹了SpringCloud網(wǎng)關(guān)Gateway架構(gòu)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • maven倉(cāng)庫(kù)中心mirrors配置多個(gè)下載中心(執(zhí)行最快的鏡像)

    maven倉(cāng)庫(kù)中心mirrors配置多個(gè)下載中心(執(zhí)行最快的鏡像)

    這篇文章主要介紹了maven倉(cāng)庫(kù)中心mirrors配置多個(gè)下載中心(執(zhí)行最快的鏡像),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • MyBatis-Plus?分頁(yè)不生效的解決方法

    MyBatis-Plus?分頁(yè)不生效的解決方法

    本文主要介紹了MyBatis-Plus?分頁(yè)不生效的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • java Aop實(shí)現(xiàn)自動(dòng)填充字段值示例

    java Aop實(shí)現(xiàn)自動(dòng)填充字段值示例

    這篇文章主要為大家介紹了Aop實(shí)現(xiàn)自動(dòng)填充字段值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Reactive Programming入門概念詳解

    Reactive Programming入門概念詳解

    這篇文章主要為大家介紹了Reactive Programming入門概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Resilience4J通過(guò)yml設(shè)置circuitBreaker的方法

    Resilience4J通過(guò)yml設(shè)置circuitBreaker的方法

    Resilience4j是一個(gè)輕量級(jí)、易于使用的容錯(cuò)庫(kù),其靈感來(lái)自Netflix Hystrix,但專為Java 8和函數(shù)式編程設(shè)計(jì),這篇文章主要介紹了Resilience4J通過(guò)yml設(shè)置circuitBreaker的方法,需要的朋友可以參考下
    2022-10-10
  • SpringMVC中@controllerAdvice注解的詳細(xì)解釋

    SpringMVC中@controllerAdvice注解的詳細(xì)解釋

    剛接觸SpringMVC應(yīng)該很少會(huì)見(jiàn)到這個(gè)注解,其實(shí)它的作用非常大,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@controllerAdvice注解的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • java設(shè)計(jì)模式理解依賴于抽象不依賴具體的分析

    java設(shè)計(jì)模式理解依賴于抽象不依賴具體的分析

    這篇文章主要為大家介紹了java設(shè)計(jì)模式的規(guī)則,理解依賴于抽象不依賴具體的示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Springboot?hibernate-validator?6.x快速校驗(yàn)示例代碼

    Springboot?hibernate-validator?6.x快速校驗(yàn)示例代碼

    這篇文章主要介紹了Springboot?hibernate-validator?6.x校驗(yàn),本文以6.2.1.Final版本為例解決了log4j版本的漏洞問(wèn)題,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • SpringBoot+Tess4j實(shí)現(xiàn)牛的OCR識(shí)別工具的示例代碼

    SpringBoot+Tess4j實(shí)現(xiàn)牛的OCR識(shí)別工具的示例代碼

    這篇文章主要介紹了SpringBoot+Tess4j實(shí)現(xiàn)牛的OCR識(shí)別工具的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

天台县| 长治县| 马公市| 黑山县| 商水县| 孟村| 富平县| 安仁县| 乌兰浩特市| 汕头市| 耿马| 临夏市| 长垣县| 古蔺县| 太和县| 临夏县| 南靖县| 南部县| 宜兰县| 固原市| 余庆县| 松潘县| 景谷| 苍山县| 金坛市| 深泽县| 淄博市| 蓝山县| 周口市| 横峰县| 合水县| 喀什市| 韩城市| 北票市| 太仆寺旗| 肥东县| 忻城县| 淅川县| 南充市| 湘乡市| 内乡县|