日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java thumbnails 中心点_java Thumbnails 图片处理的使用

發(fā)布時間:2025/3/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java thumbnails 中心点_java Thumbnails 图片处理的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在后端開發(fā)的過程中,都逃不開與文件傳輸特別是圖片的傳輸打交道,但是因為現(xiàn)在各種拍照設(shè)備發(fā)展越來越快,拍出的照片更是越來越清晰,但是照片文件的大小也是越來越大了,手機(jī)拍照小則2M大則30M這在網(wǎng)絡(luò)傳輸過程中誰頂?shù)米⊙?#xff01;所以在用戶發(fā)布照片,后端對圖像文件進(jìn)行保存的過程中壓縮圖像文件是必不可少的一個過程。

而Thumbnails就是一個很好的圖像處理工具,他把復(fù)雜的圖像處理封裝的很好,只需要短短的一行代碼就能完成對圖像的壓縮。

Thumbnails支持:

指定大小進(jìn)行縮放

按照比例進(jìn)行縮放

不按照比例,指定大小進(jìn)行縮放

旋轉(zhuǎn)

水印

裁剪

轉(zhuǎn)化圖像格式

輸出到OutputStream

輸出到BufferedImage

輸出到ByteArrayOutputStream(OutputStream)

輸出到ByteArrayInputStream(InputStream)

輸出到byte[]

Thumbnails導(dǎo)入依賴

net.coobird

thumbnailator

0.4.8

一,指定大小進(jìn)行縮放

//size(寬度, 高度)

/*

* 若圖片橫比200小,高比300小,不變

* 若圖片橫比200小,高比300大,高縮小到300,圖片比例不變

* 若圖片橫比200大,高比300小,橫縮小到200,圖片比例不變

* 若圖片橫比200大,高比300大,圖片按比例縮小,橫為200或高為300

*/

Thumbnails.of("images/a380_1280x1024.jpg")

.size(200, 300)

.toFile("c:/a380_200x300.jpg");

Thumbnails.of("images/a380_1280x1024.jpg")

.size(2560, 2048)

.toFile("c:/a380_2560x2048.jpg");

二,單個圖片等比例縮放

File file = new File("c:\\test.png");

Thumbnails.of(new FileInputStream(file)).scale(3.0).toFile(new File("c:\\yyyyy.png"));

3.0是一個double類型的數(shù)字,縮放比例,大于1就是變大,小于1就是縮小

三,不按照比例,指定大小進(jìn)行縮放

//keepAspectRatio(false) 默認(rèn)是按照比例縮放的

Thumbnails.of("images/a380_1280x1024.jpg")

.size(200, 200)

.keepAspectRatio(false)

.toFile("c:/a380_200x200.jpg");

四,批量產(chǎn)生縮略圖

Thumbnails.of(new File("D:\\pics").listFiles()).scale(0.2).outputFormat("png")

.toFiles(Rename.PREFIX_DOT_THUMBNAIL);

五,控制圖片質(zhì)量,圖片尺寸不變

File fromPic = new File("C:\\Users\\Administrator\\Desktop\\IdCardPositive_987136936_1531741954688.jpeg");

File toPic =new File("C:\\Users\\Administrator\\Desktop\\IdCardPositive_987136936_08.jpeg");

Thumbnails.of(fromPic).scale(1f).outputQuality(0.25f).toFile(toPic);

outputQuality就是用來控制圖片質(zhì)量的

六,給圖片加水印

Thumbnails.of(fromPic).scale(0.8)

.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(waterPic), 0.5f)

.outputQuality(0.8f).toFile(toPic);

//watermark(位置,水印圖,透明度)

Thumbnails.of("images/a380_1280x1024.jpg")

.size(1280, 1024)

.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f)

.outputQuality(0.8f)

.toFile("c:/a380_watermark_bottom_right.jpg");

Thumbnails.of("images/a380_1280x1024.jpg")

.size(1280, 1024)

.watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f)

.outputQuality(0.8f)

.toFile("c:/a380_watermark_center.jpg");

fromPic是原圖,waterPic是水印圖片,toPic是生成后的圖片

七,旋轉(zhuǎn)圖片

Thumbnails.of(fromPic).scale(0.5).rotate(90).toFile(toPic);

八,圖片裁剪

Thumbnails.of(fromPic).sourceRegion(Positions.CENTER, 300, 300).scale(1.0).toFile(toPic);

//sourceRegion()

//圖片中心400*400的區(qū)域

Thumbnails.of("images/a380_1280x1024.jpg")

.sourceRegion(Positions.CENTER, 400,400)

.size(200, 200)

.keepAspectRatio(false)

.toFile("c:/a380_region_center.jpg");

//圖片右下400*400的區(qū)域

Thumbnails.of("images/a380_1280x1024.jpg")

.sourceRegion(Positions.BOTTOM_RIGHT, 400,400)

.size(200, 200)

.keepAspectRatio(false)

.toFile("c:/a380_region_bootom_right.jpg");

//指定坐標(biāo)

Thumbnails.of("images/a380_1280x1024.jpg")

.sourceRegion(600, 500, 400, 400)

.size(200, 200)

.keepAspectRatio(false)

.toFile("c:/a380_region_coord.jpg");

九,WEB輸出流圖片

某些應(yīng)用上傳的圖片可能質(zhì)量比較高,但是用戶在列表瀏覽的時候,又不想原圖展示,因為帶寬要求較高,此時可以降低圖片質(zhì)量(上面提到的outputQuality),以outputstream輸出流的方式response給瀏覽器去展示

@RequestMapping("/getImages")

public void getImages(HttpServletRequest request, HttpServletResponse response) throws IOException {

Thumbnails.of("images/a380_1280x1024.jpg").

scale(1f).

outputQuality(0.5f).

outputFormat("jpg").toOutputStream(response.getOutputStream());

}

十,圖像的格式轉(zhuǎn)換

//outputFormat(圖像格式)

Thumbnails.of("images/a380_1280x1024.jpg")

.size(1280, 1024)

.outputFormat("png")

.toFile("c:/a380_1280x1024.png");

Thumbnails.of("images/a380_1280x1024.jpg")

.size(1280, 1024)

.outputFormat("gif")

.toFile("c:/a380_1280x1024.gif");

十一,輸出到BufferedImage

//asBufferedImage() 返回BufferedImage

BufferedImage thumbnail = Thumbnails.of("images/a380_1280x1024.jpg")

.size(1280, 1024)

.asBufferedImage();

ImageIO.write(thumbnail, "jpg", new File("c:/a380_1280x1024_BufferedImage.jpg"));

十二,輸出到ByteArrayOutputStream(OutputStream)

ByteArrayOutputStream thumbnailOutputStream = new ByteArrayOutputStream();

Thumbnails.of("images/a380_1280x1024.jpg").

scale(1f).

outputQuality(0.5f).

outputFormat("jpg").toOutputStream(thumbnailOutputStream);

十三,輸出到ByteArrayInputStream(InputStream)

ByteArrayOutputStream thumbnailOutputStream = new ByteArrayOutputStream();

Thumbnails.of("images/a380_1280x1024.jpg").

scale(1f).

outputQuality(0.5f).

outputFormat("jpg").toOutputStream(thumbnailOutputStream);

ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(thumbnailOutputStream.toByteArray());

十三,輸出到byte[]

ByteArrayOutputStream handlerOutputStream = new ByteArrayOutputStream();

Thumbnails.of(inputStream).

scale(1f).

outputQuality(0.25f).

outputFormat("jpg").toOutputStream(handlerOutputStream);

byte[] bytes = handlerOutputStream.toByteArray();

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

總結(jié)

以上是生活随笔為你收集整理的java thumbnails 中心点_java Thumbnails 图片处理的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。