Java에서 이미지 크기 조정
-
BufferedImage.getScaledInstance()
를 사용하여 Java에서 이미지 크기 조정 및 표시 -
Graphics2D
및ImageIO
를 사용하여 이미지 크기를 조정하고 Java에서 로컬 디렉토리에 저장
Java는 파일 읽기, 쓰기 또는 삭제와 같은 다양한 유형의 여러 작업을 수행 할 수 있습니다. 다음 예제에서는 세 가지 기술을 사용하여 Java에서 이미지 크기를 조정하는 방법을 보여줍니다.
BufferedImage.getScaledInstance()
를 사용하여 Java에서 이미지 크기 조정 및 표시
첫 번째 예에서는 이미지 크기를 조정하고 어디에도 저장하지 않고 프레임 안에 표시합니다. 여기에서BufferedImage
클래스의bufferedImage
객체를 만듭니다. BufferedImage
클래스는 그래픽 이미지를 직사각형 픽셀의 배열로 나타내는Image
클래스를 확장합니다. 이미지를 읽기 위해ImageIO.read()
함수를 사용합니다. 여기서ImageIO
는 입력 및 출력 작업을 수행하기위한read
및write
와 같은 정적 메서드를 포함하는 클래스입니다.
File
클래스 생성자를 호출하고 이미지 위치를 인수로 전달하는new File()
메소드를 사용하여 이미지를 얻습니다. bufferedImage
객체를 가져 오면이를 사용하여 이미지의 크기가 조정 된 버전을 생성하는getScaledInstance()
메서드를 호출합니다.
getScaledInstance
함수는 세 개의 인수를 사용합니다. 처음 두 개는 이미지에 제공 할 픽셀 단위의 너비와 높이이고 마지막 인수는 크기 조정에 사용할 알고리즘입니다. 여기서는 클래스가 기본 샘플링 알고리즘을 사용하도록 지시하는Image.SCALE_DEFAULT
함수를 사용합니다.
완료되면JFrame
개체를 사용하여 이미지를 표시하는 창을 만듭니다. frame
개체의 레이아웃을FlowLayout
으로 설정하여 구성 요소를 한 줄로 배열합니다. 그런 다음 창의 크기를 설정합니다. 그림을 완전히 표시하려면이 크기가 이미지의 높이와 너비보다 커야합니다.
마지막으로 이미지를 표시하기 위해JLabel
의 객체를 만들고 이미지를 아이콘으로 설정하는section
클래스를 호출합니다. 마지막으로jLabel
객체를frame
객체에 추가하고 가시성을 true로 설정합니다.
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class ResizeImageExample {
public static void main(String[] args) throws IOException {
new ResizeImageExample();
}
public ResizeImageExample() throws IOException {
BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\User1\\Pictures\\java.png"));
Image image = bufferedImage.getScaledInstance(600, 400, Image.SCALE_DEFAULT);
ImageIcon icon = new ImageIcon(image);
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
frame.setSize(800, 600);
JLabel jLabel = new JLabel();
jLabel.setIcon(icon);
frame.add(jLabel);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
출력:
Graphics2D
및ImageIO
를 사용하여 이미지 크기를 조정하고 Java에서 로컬 디렉토리에 저장
두 번째 방법에서는Graphics2D
클래스를 사용하여 그래픽을 만듭니다. 첫 번째 단계는 이미지 경로를 포함하는 인수로File
객체를 사용하는ImageIo.read()
메소드를 사용하여 이미지 파일을 가져 오는 것입니다. ImageIo.read()
는BufferedImage
객체,bufferedImageInput
을 반환합니다. 이미지를 작성할 때 사용할 다른BufferedImage
객체를 만듭니다. 높이, 너비 및 이미지 유형의 세 가지 인수가 필요합니다.
이제Graphics2D
객체g2d
를 반환하는bufferdImageOutput
객체를 사용하여createGraphics()
메소드를 호출합니다. 그런 다음 6 개의 인수를 사용하는drawImage()
메서드를 사용하여 이미지를 만듭니다. 첫 번째는BufferedImage
객체이고 두 번째와 세 번째는 두 값이 모두 0 인 경우 크기에 따라 확장되는 x 및 y 좌표입니다. 네 번째와 다섯 번째 인수는 이미지에 제공 할 새 높이와 너비를 나타내고 마지막 인수는이 경우null
인ImageObserver
입니다.
계속하기 전에g2d.dispose()
함수를 사용하여g2d
에서 사용하는 모든 컨텍스트와 리소스를 삭제합니다. 크기가 조정 된 이미지를 로컬 디렉토리에 저장하려면bufferedImageOutput
객체, 새 이미지 파일에 지정할 이름 및 파일 경로가있는File
생성자를받는ImageIo.write()
함수를 사용합니다.
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ResizeImageExample {
public static void main(String[] args) throws IOException {
resizeFile("C:\\Users\\Rupam Saini\\Pictures\\java.png",
"C:\\Users\\Rupam Saini\\Pictures\\java-resized.png", 500, 500);
}
public static void resizeFile(String imagePathToRead, String imagePathToWrite, int resizeWidth,
int resizeHeight) throws IOException {
File fileToRead = new File(imagePathToRead);
BufferedImage bufferedImageInput = ImageIO.read(fileToRead);
BufferedImage bufferedImageOutput =
new BufferedImage(resizeWidth, resizeHeight, bufferedImageInput.getType());
Graphics2D g2d = bufferedImageOutput.createGraphics();
g2d.drawImage(bufferedImageInput, 0, 0, resizeWidth, resizeHeight, null);
g2d.dispose();
String formatName = imagePathToWrite.substring(imagePathToWrite.lastIndexOf(".") + 1);
ImageIO.write(bufferedImageOutput, formatName, new File(imagePathToWrite));
}
}
크기 조정 전 이미지 :
크기 조정 후 이미지 :
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn