자바 는 Thumbnails 를 사용 하여 큰 그림 을 압축 합 니 다.

머리말
     최근 프로젝트 개발 에 서 는 사진 업로드 에 자주 사용 되 지만 너무 큰 그림 은 볼 때 열 리 는 속도 에 영향 을 주 고 데이터 낭비 와 서버 저장 공간 을 낭비 하기 때문에 백 엔 드 에서 사진 을 처리 하고 업로드 해 야 합 니 다.여 기 는 Thumbnails 이미지 처리 도구 류 를 사 용 했 습 니 다.
Thumbnails 는 주로 다음 과 같은 기능 을 지원 합 니 다.
  1.크기 를 지정 하여 크기 조정
  2,비율 에 따라 크기 조정
  3.비례 하지 않 고 크기 를 지정 하여 크기 조정
  4.회전
  5.워 터 마크
  6.재단
  7.그림 형식 전환
  8、OutputStream 으로 출력
  9、BufferedImage 로 출력
사용 절차:
1.Maven 추가

<dependency>
  <groupId>net.coobird</groupId>
  <artifactId>thumbnailator</artifactId>
  <version>0.4.8</version>
</dependency>
2.구체 적 인 조작
   1:크기 조정 할 크기 지정

/**
   *         
   * 
   * @throws IOException
   */
  private void test1() throws IOException {
    /*
     * size(width,height)      200 ,  300 ,  
     *      200 ,  300 ,    300,            200 ,  300 ,    200,      
     *      200 ,  300 ,       ,  200   300
     */
    Thumbnails.of("images/test.jpg").size(200, 300).toFile("C:/image_200x300.jpg");
    Thumbnails.of("images/test.jpg").size(2560, 2048).toFile("C:/image_2560x2048.jpg");
 }
     2:비율 에 따라 크기 조정

/**
   *         
   * scale           0-1  ,1f    ,0.5            * outputQuality           0-1   ,   1    ,   0     
   * @throws IOException
   */
 private void test2() throws IOException {
    /**
     * scale(  )
     */
    Thumbnails.of("images/test.jpg").scale(0.25f).outputQuality(0.8f).toFile("C:/image_25%.jpg");
    Thumbnails.of("images/test.jpg").scale(0.75f).outputQuality(0.8f).toFile("C:/image_110%.jpg"); }
      3:비례 하지 않 고 크기 를 지정 하여 크기 조정

/**
   *      ,        
   * 
   * @throws IOException
   */
 private void test3() throws IOException {
    /**
     * keepAspectRatio(false)           
     */
    Thumbnails.of("images/test.jpg").size(120, 120).keepAspectRatio(false).toFile("C:/image_120x120.jpg"); }
    4:회전

/**
   *   
   * 
   * @throws IOException
   */
 private void test4() throws IOException {
    /**
     * rotate(  ),  :      :   
     */
    Thumbnails.of("images/test.jpg").size(1280, 1024).rotate(90).toFile("C:/image+90.jpg");
    Thumbnails.of("images/test.jpg").size(1280, 1024).rotate(-90).toFile("C:/iamge-90.jpg");
 }
     5:워 터 마크

/**
   *   
   * 
   * @throws IOException
   */
 private void test5() throws IOException {
    /**
     * watermark(  ,   ,   )
     */
    Thumbnails.of("images/test.jpg").size(1280, 1024).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f)
        .outputQuality(0.8f).toFile("C:/image_watermark_bottom_right.jpg");
    Thumbnails.of("images/test.jpg").size(1280, 1024).watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f)
        .outputQuality(0.8f).toFile("C:/image_watermark_center.jpg");
 }
     6:재단

/**
   *   
   * 
   * @throws IOException
   */
  private void test6() throws IOException {
    /**
     *     400*400   
     */
    Thumbnails.of("images/test.jpg").sourceRegion(Positions.CENTER, 400, 400).size(200, 200).keepAspectRatio(false)
        .toFile("C:/image_region_center.jpg");
    /**
     *     400*400   
     */
    Thumbnails.of("images/test.jpg").sourceRegion(Positions.BOTTOM_RIGHT, 400, 400).size(200, 200).keepAspectRatio(false)
        .toFile("C:/image_region_bootom_right.jpg");
    /**
     *     
     */
    Thumbnails.of("images/test.jpg").sourceRegion(600, 500, 400, 400).size(200, 200).keepAspectRatio(false).toFile("C:/image_region_coord.jpg");

  }
     7:그림 형식 전환

/**
   *       
   * 
   * @throws IOException
   */
  private void test7() throws IOException {
    /**
     * outputFormat(    )
     */
    Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("png").toFile("C:/image_1280x1024.png");
    Thumbnails.of("images/test.jpg").size(1280, 1024).outputFormat("gif").toFile("C:/image_1280x1024.gif");
  }
      8:출력 스 트림 으로 출력

/**
   *    OutputStream
   * 
   * @throws IOException
   */
  private void test8() throws IOException {
    /**
     * toOutputStream(   )
     */
    OutputStream os = new FileOutputStream("C:/image_1280x1024_OutputStream.png");
    Thumbnails.of("images/test.jpg").size(1280, 1024).toOutputStream(os);
 }
     9:BufferedImage 로 출력

/**
   *    BufferedImage
   * 
   * @throws IOException
   */
  private void test9() throws IOException {
    /**
     * asBufferedImage()   BufferedImage
     */
    BufferedImage thumbnail = Thumbnails.of("images/test.jpg").size(1280, 1024).asBufferedImage();
    ImageIO.write(thumbnail, "jpg", new File("C:/image_1280x1024_BufferedImage.jpg"));
 }
   3.그림 파일 에 대한 Base 64 작업

/**
   *            Base64  
   * 
   * @throws IOException
  */
  public String Base64ImageByMemory(BufferedImage pic) {
    String imgString = "";
    ByteArrayOutputStream newBaos = new ByteArrayOutputStream();//io 
    try {
      ImageIO.write(pic, "jpg", newBaos);//    
      byte[] bytes = newBaos.toByteArray();//     
      imgString = URLEncoder.encode(new BASE64Encoder().encode(bytes), "UTF-8");
    } catch (Exception e) {
      e.printStackTrace();
    }
    return imgString;
  }
   4.서버 이미지 파일 크기 가 져 오기

/**
 *    OutputStream
 * 
 * @throws IOException
 */
 public void getImageFileSize(){
  int size;
  URLConnection conn;
  try {
    String path="";
    path="https://bkimg.cdn.bcebos.com/pic/a8773912b31bb051c36044e93b7adab44bede0af";//    
    //path="http://10.30.23.217:9017/image/0c09ca36-abea-4efa-85b0-99b6d261f66c"; //      
    URL url = new URL(path);
    conn = url.openConnection();
    size = conn.getContentLength();
    if (size < 0){
     System.out.println("Could not determine file size.");
    }else{
     System.out.println("The size of file is = " + size + " bytes"); 
     BigDecimal filesize = new BigDecimal(size);
     BigDecimal megabyte = new BigDecimal(1024 * 1024);
     float returnValue = filesize.divide(megabyte, 2, BigDecimal.ROUND_UP).floatValue();
     System.out.println("The size of file is = "+returnValue+"M"); 
    }
    conn.getInputStream().close();
   } catch (IOException e) {
   e.printStackTrace();
  }
 }

이로써 그림 압축 에 관 한 처리 와 Base 64,서버 파일 크기 를 가 져 오 는 기능 이 끝 났 습 니 다!
이상 은 자바 가 Thumbnails 를 사용 하여 큰 그림 압축 에 대한 상세 한 내용 입 니 다.자바 큰 그림 압축 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기