-
Java 여러장의 이미지 세로로 merge 하기Java 2022. 4. 12. 16:43반응형
Java단에서 여러장의 이미지를 세로로 길게 merge 해야하는 상황이 있다.
이미지 로드 & 합친 이미지 width, height 구하기
List<BufferedImage> images = new ArrayList<>(); int max_width = 0; int max_height = 0; for (String imageUrl : imageUrls) { try { BufferedImage originalImage = ImageIO.read(new URL(imageUrl)); max_height += originalImage.getHeight(); max_width = Math.max(originalImage.getHeight(), max_width); images.add(originalImage); } catch (IOException e) { log.error("Image processing error", e); } }
이미지를 load하면서 세로 길이는 더해주고 가로 길이는 비교하여 가장 큰 값으로 업데이트한다.
새로운 이미지에 기존 이미지 그리기
BufferedImage mergedImage = new BufferedImage(maxWidth, maxHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = (Graphics2D) mergedImage.getGraphics(); int y = 0; for (BufferedImage image : subImageListInfo.getImages()) { graphics.drawImage(image, 0, y, null); y += image.getHeight(); } graphics.dispose();
이미지 리스트에서 이미지를 하나씩 꺼내서 그린다. y에 이미지의 높이를 더하면서 그림으로써 세로로 길게 붙이는 효과를 볼 수 있다.
저장하기
try { ImageIO.write(newImage, "jpeg", new File("/tmp/test.jpeg")); } catch (IOException e) { log.error("Fail to save"); }
반응형'Java' 카테고리의 다른 글
Feign POST 파일 전송 (multipart/form-data) (0) 2022.04.12 Feign POST application/x-www-form-urlencoded (0) 2022.04.12 JAVA BufferedImage to MultipartFile (0) 2022.04.12 Java 최대 너비 높이에 맞춰 resize하기 (0) 2022.04.12 Proxy 통해 이미지 URL 다운로드 (0) 2022.04.12