Java에서 이미지 자르기

Zeeshan Afridi 2023년10월12일
  1. BufferedImage 클래스를 사용하여 Java에서 이미지 자르기
  2. 결론
Java에서 이미지 자르기

이미지 자르기는 이미지에서 눈에 잘 띄는 부분을 제거하는 데 자주 사용됩니다. 이미지를 잘라서 프레임의 특정 개체에 주의를 끌 수 있으며 이 기사에서는 프로그래밍 방식으로 Java에서 사진을 자르는 방법을 설명합니다.

유료 도구는 용도가 많고 시간을 절약할 수 있지만 며칠 만에 만들 수 있을 때 시도하는 것은 항상 가치가 있습니다. 이 게시물은 주로 타사의 값비싼 도구를 피하여 비용을 절약할 수 있는 초보자를 위한 것입니다. BufferedImage 클래스의 subimage 기능을 사용하여 Java에서 이미지를 자릅니다.

BufferedImage 클래스를 사용하여 Java에서 이미지 자르기

이러한 예제를 만들 때 BufferedImage 클래스가 고려되었습니다.

BufferedImage 클래스의 getSubimage() 메서드 구문:

public BufferedImage getSubimage(int X, int Y, int width, int height)

이 코드는 직사각형 영역이 과거 입력에 의해 결정되는 하위 이미지를 반환합니다. 다음은 네 가지 매개변수에 대한 설명입니다.

매개변수 설명
X 선택한 직사각형 영역의 왼쪽 상단 모서리의 x 좌표를 제공합니다.
Y 왼쪽 위 모서리의 지정된 사각형 영역의 y 좌표를 제공합니다.
Height 직사각형 영역의 높이가 지정됩니다.
Width 직사각형 영역의 너비를 정의합니다.

다음은 자르기 할 이미지입니다.

원본 이미지

코드 예:

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Main {
  public static void main(String[] args) {
    File imageFile = new File("/D:/test/image.jpg");
    BufferedImage bufferedImage = null;
    try {
      bufferedImage = ImageIO.read(imageFile);
      BufferedImage image = bufferedImage.getSubimage(0, 0, 50, 50);
      File pathFile = new File("/D:/test/image-crop.jpg");
      ImageIO.write(image, "jpg", pathFile);
    } catch (IOException e) {
      System.out.println(e);
    }
  }
}

출력:

Java에서 이미지 자르기

10행과 16행에 내 것을 제공했지만 파일 위치를 제공해야 합니다. 또한 사용자가 런타임에 X, Y, 너비높이 값을 제공하여 추가 코드 유연성을 제공할 수 있습니다.

여기서 우리는 또 다른 예를 찾고 있습니다. 이미지를 자르려면 Java에서 일부 클래스가 필요합니다. 다음은 Java에서 이미지를 자르기 전에 가져와야 하는 필수 클래스입니다.

이미지 파일을 읽고 쓰려면 File 클래스를 가져와야 합니다. 이 클래스는 일반적으로 파일 및 디렉토리의 경로 이름을 나타냅니다.

Import java.io.File

IOException 클래스는 오류를 처리하는 데 사용됩니다.

Import java.io.IOException

BufferedImage 클래스를 사용하여 이미지를 보유하는 BufferedImage 개체를 빌드합니다.

import java.awt.image.BufferedImage

이미지에서 읽기-쓰기 작업을 수행하기 위해 ImageIO 클래스를 가져올 것입니다. 이 수업에서는 정적 이미지 읽기 및 쓰기 기술을 사용할 수 있습니다.

import javax.imageio.ImageIO

여러 BufferedImage 클래스의 내장 메서드를 사용합니다.

// importing the necessary packages
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

// Main class
public class GFG {
  // Main driver method
  public static void main(String[] args) {
    // Using a try block, look for exceptions
    try {
      // Reading the original image from the local path by
      // creating an object of BufferedImage class
      BufferedImage originalImg = ImageIO.read(new File("D:/test/Image.jpeg"));

      // Fetching and printing alongside the
      // dimensions of original image using getWidth()
      // and getHeight() methods
      System.out.println(
          "Original Image Dimension: " + originalImg.getWidth() + "x" + originalImg.getHeight());

      // Creating a subimage of given dimensions
      BufferedImage SubImg = originalImg.getSubimage(50, 50, 50, 50);

      // Printing Dimensions of the new image created
      System.out.println(
          "Cropped Image Dimension: " + SubImg.getWidth() + "x" + SubImg.getHeight());

      // Creating a new file for the cropped image by
      // creating an object of the File class
      File outputfile = new File("D:/test/ImageCropped.jpeg");

      // Writing image in the new file created
      ImageIO.write(SubImg, "png", outputfile);

      // Display message on console representing
      // proper execution of program
      System.out.println("Cropped Image created successfully");
    }

    // Catch block to handle the exceptions
    catch (IOException e) {
      // Print the exception along with the line number
      // using printStackTrace() method
      e.printStackTrace();
    }
  }
}

또한 프로그램 실행 후 콘솔은 지정된 경로에서 실행된 메시지와 새로 생성된 잘린 이미지를 표시합니다.

결론

Java에서 이미지를 자르는 방법을 명확하게 이해했습니다. 직사각형 영역이 몇 가지 다른 방법의 과거 입력에 의해 결정되는 그림을 자르는 방법과 BufferedImage 클래스 및 기타 내장 방법을 사용하여 Java에서 이미지를 자르는 방법을 보여 주었습니다.

또한 설명서를 사용하여 Java 이미지 자르기에 대해 자세히 알아볼 수 있습니다. 이 페이지를 읽었으므로 이미지 자르기가 무엇인지 알고 있을 것입니다.

단순히 이미지의 외부 부분을 제거하여 프레임을 개선하고 종횡비를 변경하는 등의 작업을 수행할 수 있습니다. 이제 주어진 Java 코드를 사용하여 매우 빠르게 수행할 수 있습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn