Thumbnailator 를 이용 하여 그림 크기 조정,회전 과 워 터 마크 를 쉽게 실현 합 니 다.

개술
Thumbnailator 는 그림 의 크기 조정,회전,워 터 마크 처 리 를 위 한 아주 간단 한 API 를 제공 합 니 다.
얼마나 쉬 울 까요?코드 한 줄 로 간단하게 그림 처 리 를 완성 할 수 있 습 니 다.형식 은 다음 과 같다.

Thumbnails.of(new File("path/to/directory").listFiles())
 .size(640, 480)
 .outputFormat("jpg")
 .toFiles(Rename.PREFIX_DOT_THUMBNAIL);
물론 Thumbnailator 는 디 테 일 한 부분 이 있 으 니 일일이 말씀 드 리 겠 습 니 다.
핵심 API
Thumbnails
Thumbnails 는 Thumbnailator 를 사용 하여 미리 보기 그림 을 만 드 는 주 입구 입 니 다.
그것 은 Thumbnails.Builder 을 초기 화 하 는 인 터 페 이 스 를 제공 했다.
먼저 이 인터페이스의 성명 을 보십시오.

//         
public static Builder<File> of(String... files) {...}
public static Builder<File> of(File... files) {...}
public static Builder<URL> of(URL... urls) {...}
public static Builder<? extends InputStream> of(InputStream... inputStreams) {...}
public static Builder<BufferedImage> of(BufferedImage... images) {...}
//    (     Iterable     Java      ,      List、Set)
public static Builder<File> fromFilenames(Iterable<String> files) {...}
public static Builder<File> fromFiles(Iterable<File> files) {...}
public static Builder<URL> fromURLs(Iterable<URL> urls) {...}
public static Builder<InputStream> fromInputStreams(Iterable<? extends InputStream> inputStreams) {...}
public static Builder<BufferedImage> fromImages(Iterable<BufferedImage> images) {...}
Thumbnails 는 파일 이름,파일,네트워크 그림 의 URL,이미지 흐름,이미지 캐 시 등 다양한 방식 으로 구조 기 를 초기 화 할 수 있 음 이 분명 하 다.
따라서 실제 수요 에 따라 그림 의 입력 방식 을 유연 하 게 선택 할 수 있다.
주의해 야 할 점:입력 이 여러 대상(용기 대상 을 직접 입력 하거나 가 변 적 인 매개 변수 방식 으로 여러 대상 에 전송 하 든)이 라면 출력 도 여러 대상 을 출력 하 는 방식 을 선택해 야 합 니 다.그렇지 않 으 면 이상 이 발생 할 수 있 습 니 다.
Thumbnails.BuilderThumbnails.Builder 은 Thumbnails 의 내부 정적 클래스 입 니 다.미리 보기 그림 작업 을 만 드 는 데 사용 할 인 자 를 설정 합 니 다.
주:Thumbnails.Builder 의 구조 함 수 는 사유 함수 입 니 다.따라서 Thumbnails 의 실례 화 함 수 를 통 해서 만 초기 화 할 수 있 습 니 다.
매개 변수 함수 설정Thumbnails.Builder 은 크기 조정 그림 파 라 메 터 를 설정 하기 위해 함수 체인 형식의 인 터 페 이 스 를 제공 합 니 다.
크기 함수 설정 을 예 로 들 면:

public Builder<T> size(int width, int height)
{
 updateStatus(Properties.SIZE, Status.ALREADY_SET);
 updateStatus(Properties.SCALE, Status.CANNOT_SET);
 
 validateDimensions(width, height);
 this.width = width;
 this.height = height;
 
 return this;
}
this 지침 을 되 돌려 서 매개 변수 함 수 를 체인 호출 방식 으로 사용 할 수 있 도록 합 니 다.형식 은 다음 과 같 습 니 다.

Thumbnails.of(new File("original.jpg"))
 .size(160, 160)
 .rotate(90)
 .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f)
 .outputQuality(0.8)
 .toFile(new File("image-with-watermark.jpg"));
좋 은 점 은 코드 를 크게 간소화 한 것 이다.
출력 함수Thumbnails.Builder 은 생 성 된 크기 조정 도 를 출력 하기 위해 리 셋 함 수 를 제공 합 니 다.
함수 설명 은 다음 과 같 습 니 다.

//       
public List<BufferedImage> asBufferedImages() throws IOException {...}
public BufferedImage asBufferedImage() throws IOException {...}
//       
public List<File> asFiles(Iterable<File> iterable) throws IOException {...}
public List<File> asFiles(Rename rename) throws IOException {...}
public List<File> asFiles(File destinationDir, Rename rename) throws IOException {...}
//     
public void toFile(File outFile) throws IOException {...}
public void toFile(String outFilepath) throws IOException {...}
public void toFiles(Iterable<File> iterable) throws IOException {...}
public void toFiles(Rename rename) throws IOException {...}
public void toFiles(File destinationDir, Rename rename) throws IOException {...}
//      
public void toOutputStream(OutputStream os) throws IOException {...}
public void toOutputStreams(Iterable<? extends OutputStream> iterable) throws IOException {...}
작업 흐름
Thumbnailator 의 작업 절 차 는 매우 간단 하여 세 단계 로 나 눌 수 있 습 니 다.
  • 입력:Thumbnails 는 입력 에 따라 구조 기 를 초기 화 합 니 다―Thumbnails.Builder .
  • 설정:Thumbnails.Builder 그림 크기 조정 인 자 를 설정 합 니 다.
  • 출력:Thumbnails.Builder 출력 그림 파일 이나 그림 흐름.
  • 더 자세 한 내용 은 참고 할 수 있 습 니 다:Thumbnailator 홈 페이지 javadoc
    실전
    이 글 은 Thumbnailator 의 핵심 API 를 소개 했다.이 어 우 리 는 실전 을 통 해 Thumbnailator 가 무엇 을 할 수 있 는 지 살 펴 볼 수 있다.
    Thumbnailator 가 어떤 그림 을 만 들 지 는 설정 매개 변수 에 따라 결 정 됩 니 다.
    설치 하 다.
    maven 프로젝트 에 의존 도입:
    
    <dependency>
     <groupId>net.coobird</groupId>
     <artifactId>thumbnailator</artifactId>
     <version>[0.4, 0.5)</version>
    </dependency>
    그림 크기 조정Thumbnails.Builder 의 size 함 수 는 새 그림 의 정확 한 너비 와 높이 를 설정 할 수 있 고 scale 함수 로 크기 조정 비율 을 설정 할 수 있 습 니 다.
    
    Thumbnails.of("oldFile.png")
     .size(16, 16)
     .toFile("newFile_16_16.png");
    
    Thumbnails.of("oldFile.png")
     .scale(2.0)
     .toFile("newFile_scale_2.0.png");
    
    Thumbnails.of("oldFile.png")
     .scale(1.0, 0.5)
     .toFile("newFile_scale_1.0_0.5.png");
    oldFile.png

    newFile_scale_1.0_0.5.png

    그림 회전Thumbnails.Builder 의 size 함 수 는 새 그림 의 회전 각 도 를 설정 할 수 있 습 니 다.
    
    Thumbnails.of("oldFile.png")
     .scale(0.8)
     .rotate(90)
     .toFile("newFile_rotate_90.png");
    
    Thumbnails.of("oldFile.png")
     .scale(0.8)
     .rotate(180)
     .toFile("newFile_rotate_180.png");
    newFile_rotate_90.png

    워 터 마크 를 넣다Thumbnails.Builder 의 워 터 마크 함 수 는 그림 에 워 터 마크 그림 을 추가 할 수 있 습 니 다.첫 번 째 매개 변 수 는 워 터 마크 의 위치 입 니 다.두 번 째 매개 변 수 는 워 터 마크 이미지 의 캐 시 데이터 입 니 다.세 번 째 매개 변 수 는 투명도 입 니 다.
    
    BufferedImage watermarkImage = ImageIO.read(new File("wartermarkFile.png"));
    Thumbnails.of("oldFile.png")
     .scale(0.8)
     .watermark(Positions.BOTTOM_LEFT, watermarkImage, 0.5f)
     .toFile("newFile_watermark.png");
    wartermarkFile.png

    newFile_watermark.png

    일괄 처리 그림
    그림 에 워 터 마크 를 대량으로 넣 어 여러 개의 그림 파일 을 어떻게 처리 하 는 지 보 여 드 리 겠 습 니 다.
    
    BufferedImage watermarkImage = ImageIO.read(new File("wartermarkFile.png"));
    
    File destinationDir = new File("D:\\watermark\\");
    Thumbnails.of("oldFile.png", "oldFile2.png")
     .scale(0.8)
     .watermark(Positions.BOTTOM_LEFT, watermarkImage, 0.5f)
     .toFiles(destinationDir, Rename.PREFIX_DOT_THUMBNAIL);
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 에 게 자바 를 배우 거나 사용 하 는 데 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

    좋은 웹페이지 즐겨찾기