[자바] Thumbnailator의 사용의 예는 섬네일 (크기 조정, 회전, 자르기, 워터 마크) 자바] Thumbnailator의 사용의 예는 (크기 조정, 회전, 자르기, 워터 마크)를 생성 썸네일 생성

발췌 : https://www.cnblogs.com/larrydpk/p/11967694.html

[자바] Thumbnailator의 사용의 예는 섬네일 (크기 조정, 회전, 자르기, 워터 마크)를 생성

(1 개) 수요

시험에 등록 사촌 아들의 필요성이 시스템은 더 이상 30킬로바이트 업로드 사진보다 더 필요하지, 지금은 전화가 쉽게 몇 MB를 이길, 그리고 그것의 사진을 얻는 방법의 30킬로바이트?

간단한 방법은 컴퓨터에 사진을 축소하는 작은 사진을 스크린 샷,하지만 지금은 고해상도 컴퓨터 화면,하지만 쉽게 스크린 샷의 크기를 제어하기 위해, 다양한 이미지 형식으로 동일한 해상도, 크기는 매우 다양하다. 시도 마이크로 편지 스크린 툴은, 화상의 출력이 상대적으로 크다. 그런 접근 방식을 포기했다.

또 다른 도구에 의해 처리 될 것이다. 사진이 특정 크기보다 작은 경우 압축이 잘못을 발견, 사진을 온라인 웹 사이트와 휴대 전화 소프트웨어 압축을 찾습니다. 우리가 다른 도구를 찾기 위해 계속 경우는 접근 방식을 포기 그래서, 그것은 시간과 좌절의 낭비, 단순히.

마지막으로, 또는 29킬로바이트 사용 Thumbnailator 라이브러리를 원본 사진의 압축 비율에 자신의 코드를되었다 쓰기, 코드의 두 개 또는 세 개의 라인을 얻을.

당신 축소판 무엇 둘을 할 수 있습니까?

썸네일은 사용 축소판이 될 것입니다, 매우 다양한, 아바타, 사진 메시지, 사진 및 기타 상품 등이다.

새로운 마이크로 편지 친구가 예를 들어,이 사진이 썸네일의 원본 이미지보다 작은 시작, 그의 머리를 볼 수 있습니다. 그리고 당신은 당신이 원본 이미지를 다운로드 줄 것이다 원본보기 위챗 클라이언트를 클릭하면. 당신이 명확한 원본 이미지를 볼 갈 것, 모든 사람의 머리가에 관심이 없기 때문에, 작은 축소판 만날 수있다. 이것은, 네트워크 전송의 부담을 줄이고 응답 시간을 단축 할 수 있습니다.

마이크로 채널 전송 사진 및 비디오는 원본 비디오 재생을 보거나 대용량 파일로 전송합니다, 당신은 상대적으로 작은 미리보기를 통과하자, 같은 방법입니다.

오픈 소스 라이브러리의 3 썸네일

오픈 소스 라이브러리의 많은 축소판 :

(1) Thumbnailator

GitHub의 : https://github.com/coobird/thumbnailator

외부 라이브러리, 경량, 고효율, 모든 플랫폼에 적용 지원하는 확장 것으로, 회전, 차단, 워터 마크 지원에 의존하지 마십시오.

(2) Imgscalr

GitHub의 : https://github.com/rkalla/imgscalr

자바 2D를 기반으로 모든 지원이 확장 것을 모든 플랫폼에 적용 가능한 고효율 외부 라이브러리, 경량,에 의존하지 않는, 회전, 차단, 워터 마크를 지원하지 않습니다.

이 문서의 Thumbnailator에 주로 사용, 최신 버전은 다음과 같이 받는다는 도입, 0.4.8입니다 :

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

일반적인 작업 4

4.1 크기 스케일링을 지정

원래의 4 : 3 화면비 포토 다음, (이미지, 사이트 작품을 업로드 할 수없는 너무 큰) 4032x3024이다 :

파일

때 지정된 크기 줌 모드, 기본은 원래의 비율을 유지하는 것입니다.

//参数小且比例与原比例一样
//则按参数输出结果
Thumbnails.of(originalPic)
  .size(400, 300)
  .toFile(picturePath + "climb-up.size.400X300.jpeg"); //参数大且比例不等 //则按比例放大,取最小的值 Thumbnails.of(originalPic) .size(4400, 3400) .toFile(picturePath + "climb-up.size.4400X3300.jpeg"); //参数小且比例不等 //则按比例缩小,取最小的值 Thumbnails.of(originalPic) .size(200, 300) .toFile(picturePath + "climb-up.size.200X150.jpeg"); //不保持比例 //则按参数输出结果 Thumbnails.of(originalPic) .size(200, 300) .keepAspectRatio(false) .toFile(picturePath + "climb-up.size.notKeepRatio.200X300.jpeg"); //强制设置大小 //则按参数输出结果,与上个例子一样 Thumbnails.of(originalPic) .forceSize(200, 300) .toFile(picturePath + "climb-up.forceSize.200X300.jpeg");

어떤 프로그램이 결과 :

(1) size(200, 300)(3) : 그 결과, 200X150 사진, 또는 (4)의 비율이다.

파일

(2) forceSize(200, 300)결과는 200X300 이미지는 원래의 다른 비율과 같이,이 변형 될 것이다.

파일

4.2 확장

동시에 폭 높은 줌 배율에 의해 스케일링 될 지칭 다음 코드 참조 :

//比例小于1,缩小
//宽和高同时缩小为原来的0.1倍
Thumbnails.of(originalPic)
  .scale(0.1f)
  .toFile(picturePath + "climb-up.scale.403X302.jpeg");
//比例大于1,放大 //宽和高同时放大为原来的1.1倍 Thumbnails.of(originalPic) .scale(1.1f) .toFile(picturePath + "climb-up.scale.4435X3326.jpeg");

4.3 회전 각도

회전 각도는 포지티브 각도, 시계 방향 인 경우, 각도는 음의 반 시계 방향이다. 다음과 같이 코드입니다 :

Thumbnails.of(originalPic)
  .size(400,300)
  .rotate(45)
  .toFile(picturePath + "climb-up.rotate.45.jpeg");

그리고 압축 된 이미지 검색 결과로서 회전하면 다음이다 :

파일

4.4 워터 마크 추가

다음과 같이 오른쪽 상단에 워터 마크가 우리의 예에서,도 매우 편리 워터 마크를 추가 :

Thumbnails.of(originalPic)
  .size(2000,1500)
  .watermark(Positions.TOP_RIGHT, ImageIO.read(
    new File(picturePath + "pkslow.size.400X300.jpeg")), 0.5f) .toFile(picturePath + "climb-up.watermark.jpeg");

게다가 사진 워터 마크 한 후 다음과 같이 :

파일

4.5 자르기

다음과 같이 코드입니다 :

Thumbnails.of(originalPic)
  .sourceRegion(Positions.TOP_RIGHT, 1800, 1800)
  .size(400, 400)
  .toFile(picturePath + "climb-up.crop.jpeg");

결과는 다음과 같다 :

파일

일괄 작업에서 4.6 디렉토리 파일

이 기능을 사용하면 카탈로그에있는 모든 사진을 조작하고, 지정된 접두사 코드가 그대로 다음과 같이 출력 파일 이름을 지정할 수 있습니다, 매우 유용합니다 :

Thumbnails.of(new File("/pictures/201912/").listFiles())
  .size(400, 400)
  .toFiles(Rename.PREFIX_DOT_THUMBNAIL);

다음과 같이 동작 후에 생성 된 결과이다 :

파일

5 요약

Thumbnailator 라이브러리를 쉽게 지원 확대, 회전, 자르기, 워터 마크 및 기타 기능, 그리고 다른 의존을 운영하기 위해서는 학습의 가치를 이해한다.


공공 우려 번호에 오신 것을 환영합니다 < 느린, 상기 호박 , 업데이트에 계속> ...

파일

더 많은 책을 더 공유, 더 마무리에 비해 더 쓰기.

 

 

1 需求

表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢?

一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏幕分辨率很高,而且截屏大小不好控制;同样分辨率在不同图片格式下,大小也相差很大。试了一下微信截图工具,输出的图片比较大。于是放弃了该办法。

另一个办法是通过其它工具来处理。找了图片在线压缩网站和一款手机软件,发现在图片小于一定大小时压缩无效。如果再继续找其它工具,简直就是折腾且浪费时间,所以也放弃了该办法。

最后,还是自己写个代码把图片按原比例压缩成了29KB,使用Thumbnailator库,两三行代码搞定。

2 缩略图可以做什么?

缩略图是应用极其广泛的,像头像、图片消息、商品图片等,都会用到缩略图。

比如,当你有了一个新的微信好友,你就能看到他的头像,一开始这个头像是一个比原图更小的缩略图。而你点击查看原图时,微信客户端才会给你下载原图。因为你并不会对每个人的头像都感兴趣,都会去查看清晰的原图,一个小小的缩略图已经能满足了。这样可以减轻网络传输的负担,加快响应速度。

微信传图片和视频也是同样的道理,先给你传一个比较小的预览,你点击查看原图或视频播放才给你传更大的文件。

3 缩略图的开源库

缩略图的开源库很多:

(1)Thumbnailator

GitHub:https://github.com/coobird/thumbnailator

不依赖外部库,轻便高效,任何平台适用,支持缩放、旋转、截取,支持水印。

(2)Imgscalr

GitHub:https://github.com/rkalla/imgscalr

자바 2D를 기반으로 모든 지원이 확장 것을 모든 플랫폼에 적용 가능한 고효율 외부 라이브러리, 경량,에 의존하지 않는, 회전, 차단, 워터 마크를 지원하지 않습니다.

이 문서의 Thumbnailator에 주로 사용, 최신 버전은 다음과 같이 받는다는 도입, 0.4.8입니다 :

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

일반적인 작업 4

4.1 크기 스케일링을 지정

원래의 4 : 3 화면비 포토 다음, (이미지, 사이트 작품을 업로드 할 수없는 너무 큰) 4032x3024이다 :

파일

때 지정된 크기 줌 모드, 기본은 원래의 비율을 유지하는 것입니다.

//参数小且比例与原比例一样
//则按参数输出结果
Thumbnails.of(originalPic)
  .size(400, 300)
  .toFile(picturePath + "climb-up.size.400X300.jpeg"); //参数大且比例不等 //则按比例放大,取最小的值 Thumbnails.of(originalPic) .size(4400, 3400) .toFile(picturePath + "climb-up.size.4400X3300.jpeg"); //参数小且比例不等 //则按比例缩小,取最小的值 Thumbnails.of(originalPic) .size(200, 300) .toFile(picturePath + "climb-up.size.200X150.jpeg"); //不保持比例 //则按参数输出结果 Thumbnails.of(originalPic) .size(200, 300) .keepAspectRatio(false) .toFile(picturePath + "climb-up.size.notKeepRatio.200X300.jpeg"); //强制设置大小 //则按参数输出结果,与上个例子一样 Thumbnails.of(originalPic) .forceSize(200, 300) .toFile(picturePath + "climb-up.forceSize.200X300.jpeg");

어떤 프로그램이 결과 :

(1) size(200, 300)(3) : 그 결과, 200X150 사진, 또는 (4)의 비율이다.

파일

(2) forceSize(200, 300)결과는 200X300 이미지는 원래의 다른 비율과 같이,이 변형 될 것이다.

파일

4.2 확장

동시에 폭 높은 줌 배율에 의해 스케일링 될 지칭 다음 코드 참조 :

//比例小于1,缩小
//宽和高同时缩小为原来的0.1倍
Thumbnails.of(originalPic)
  .scale(0.1f)
  .toFile(picturePath + "climb-up.scale.403X302.jpeg");
//比例大于1,放大 //宽和高同时放大为原来的1.1倍 Thumbnails.of(originalPic) .scale(1.1f) .toFile(picturePath + "climb-up.scale.4435X3326.jpeg");

4.3 회전 각도

회전 각도는 포지티브 각도, 시계 방향 인 경우, 각도는 음의 반 시계 방향이다. 다음과 같이 코드입니다 :

Thumbnails.of(originalPic)
  .size(400,300)
  .rotate(45)
  .toFile(picturePath + "climb-up.rotate.45.jpeg");

그리고 압축 된 이미지 검색 결과로서 회전하면 다음이다 :

파일

4.4 워터 마크 추가

다음과 같이 오른쪽 상단에 워터 마크가 우리의 예에서,도 매우 편리 워터 마크를 추가 :

Thumbnails.of(originalPic)
  .size(2000,1500)
  .watermark(Positions.TOP_RIGHT, ImageIO.read(
    new File(picturePath + "pkslow.size.400X300.jpeg")), 0.5f) .toFile(picturePath + "climb-up.watermark.jpeg");

게다가 사진 워터 마크 한 후 다음과 같이 :

파일

4.5 자르기

다음과 같이 코드입니다 :

Thumbnails.of(originalPic)
  .sourceRegion(Positions.TOP_RIGHT, 1800, 1800)
  .size(400, 400)
  .toFile(picturePath + "climb-up.crop.jpeg");

결과는 다음과 같다 :

파일

일괄 작업에서 4.6 디렉토리 파일

이 기능을 사용하면 카탈로그에있는 모든 사진을 조작하고, 지정된 접두사 코드가 그대로 다음과 같이 출력 파일 이름을 지정할 수 있습니다, 매우 유용합니다 :

Thumbnails.of(new File("/pictures/201912/").listFiles())
  .size(400, 400)
  .toFiles(Rename.PREFIX_DOT_THUMBNAIL);

다음과 같이 동작 후에 생성 된 결과이다 :

파일

5 요약

Thumbnailator 라이브러리를 쉽게 지원 확대, 회전, 자르기, 워터 마크 및 기타 기능, 그리고 다른 의존을 운영하기 위해서는 학습의 가치를 이해한다.


공공 우려 번호에 오신 것을 환영합니다 < 느린, 상기 호박 , 업데이트에 계속> ...

파일

더 많은 책을 더 공유, 더 마무리에 비해 더 쓰기.

추천

출처www.cnblogs.com/xichji/p/11968751.html