웹사이트나 모바일 앱에서 이미지 크기 조정은 매우 중요한 작업입니다. 특히 SEO(검색 엔진 최적화)를 고려할 때, 적절한 이미지 크기와 압축은 페이지 로딩 속도를 개선하고 검색 엔진 순위를 높이는 데 도움이 됩니다. Java에서는 BufferedImage와 Graphics2D를 활용하여 이미지 크기 조정 및 파일 생성이 가능합니다. 📷✨
이 글에서는 Java를 사용하여 이미지 크기를 조정하는 방법을 자세히 설명하겠습니다!
✅ 이미지 크기 조정 및 저장하기
Java에서는 BufferedImage를 활용하여 이미지 크기를 조정한 후, 파일로 저장할 수 있습니다.
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ResizeImage {
public static void main(String[] args) {
try {
// 원본 이미지 불러오기
File inputFile = new File("input.jpg");
BufferedImage inputImage = ImageIO.read(inputFile);
// 새로운 크기 지정
int newWidth = 500;
int newHeight = 300;
// 새로운 이미지 생성
BufferedImage outputImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = outputImage.createGraphics();
g2d.drawImage(inputImage.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);
g2d.dispose();
// 새로운 파일로 저장
File outputFile = new File("resized_image.jpg");
ImageIO.write(outputImage, "jpg", outputFile);
System.out.println("이미지 크기 조정 완료: " + outputFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
}
✔ ImageIO.read() → 기존 이미지 파일을 읽어옵니다.
✔ BufferedImage → 새 이미지 크기를 지정하여 생성합니다.
✔ Graphics2D → 원본 이미지를 부드럽게(SMOOTH) 크기 조정하여 저장합니다.
✔ ImageIO.write() → 변환된 이미지를 파일로 저장합니다.
✅ 비율 유지하며 크기 조정하기
이미지의 가로세로 비율을 유지하면서 크기를 조정하려면, 비율을 계산하여 적용해야 합니다.
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ResizeImageWithAspectRatio {
public static void main(String[] args) {
try {
File inputFile = new File("input.jpg");
BufferedImage inputImage = ImageIO.read(inputFile);
int originalWidth = inputImage.getWidth();
int originalHeight = inputImage.getHeight();
int targetWidth = 600;
int targetHeight = (originalHeight * targetWidth) / originalWidth;
BufferedImage outputImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = outputImage.createGraphics();
g2d.drawImage(inputImage.getScaledInstance(targetWidth, targetHeight, Image.SCALE_SMOOTH), 0, 0, null);
g2d.dispose();
File outputFile = new File("resized_image_aspect_ratio.jpg");
ImageIO.write(outputImage, "jpg", outputFile);
System.out.println("비율 유지 크기 조정 완료: " + outputFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
}
✔ 원본 이미지의 가로 대비 세로 비율을 계산하여 자동 조정합니다.
✔ targetHeight = (originalHeight * targetWidth) / originalWidth; → 비율 유지 계산식입니다.
✅ PNG, JPG, GIF 등 다양한 포맷 변환하기
Java에서는 ImageIO.write()를 사용하여 PNG, JPG, GIF 등 다양한 이미지 포맷으로 저장할 수 있습니다.
File outputFile = new File("output.png");
ImageIO.write(outputImage, "png", outputFile);
✔ 확장자만 변경하면 PNG, JPG, GIF 포맷으로 손쉽게 변환할 수 있습니다.
✅ 이미지 압축하여 파일 크기 줄이기
이미지의 품질을 유지하면서 파일 크기를 줄이려면 JPEG 압축률을 조절하는 것이 중요합니다. 아래는 Java에서 ImageWriteParam을 활용한 이미지 압축 코드입니다.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import java.util.Iterator;
public class CompressImage {
public static void main(String[] args) {
try {
File inputFile = new File("input.jpg");
BufferedImage image = ImageIO.read(inputFile);
File compressedFile = new File("compressed_image.jpg");
FileOutputStream fos = new FileOutputStream(compressedFile);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(fos);
writer.setOutput(ios);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.7f); // 0.0(최대압축) ~ 1.0(최고품질)
writer.write(null, new javax.imageio.IIOImage(image, null, null), param);
ios.close();
fos.close();
writer.dispose();
System.out.println("이미지 압축 완료: " + compressedFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
}
✔ setCompressionQuality(0.7f); → 70% 품질 유지하며 파일 크기 감소
✔ ImageWriteParam을 활용하여 JPEG 압축률 조정
✔ 원본 품질을 유지하면서도 파일 크기를 줄일 수 있음
✅ 이미지 최적화
1️⃣ 파일 크기 압축하기 → WebP 또는 JPEG 압축률을 조절하여 용량을 줄일 수 있습니다.
2️⃣ 올바른 파일명 사용 → java-resize-image.jpg처럼 SEO-friendly 파일명을 사용하세요.
3️⃣ ALT 태그 추가하기 → 웹에서 사용 시 <img alt="Java 이미지 크기 조정 예제">를 추가하세요.
4️⃣ CDN 활용 → 이미지 로딩 속도를 높이기 위해 Cloudflare, AWS S3 등을 사용할 수 있습니다.
결론 (Conclusion)
Java에서 이미지 크기 조정 및 생성하는 방법을 정리하면 다음과 같습니다.
✔ BufferedImage를 사용하여 이미지 크기를 조정합니다.
✔ Graphics2D를 이용해 고품질로 리사이징합니다.
✔ 비율을 유지한 크기 조정도 가능합니다.
✔ 다양한 포맷(PNG, JPG, GIF)으로 변환하여 저장할 수 있습니다.
✔ 최적화를 위해 파일명, ALT 태그, 압축 등을 고려합니다.
'프로그램 > Java' 카테고리의 다른 글
| [Java] setConnectTimeout, setReadTimeout 타임 설정은 몇초가 좋을까? (0) | 2025.04.25 |
|---|---|
| HttpsURLConnection 사용 시 발생한 JSON parse error: invalid UTF-8 middle byte 0x3f 오류 (1) | 2025.03.18 |
| [Java] 국가별 TimeZone(시간대) 처리 방법 (0) | 2025.03.14 |
| [Java] 소수점 자르기(반올림, 내림, 버림) 방법 (0) | 2025.03.14 |
| [Java] Date 객체와 날짜 처리 방법 (0) | 2025.03.13 |