asked on
public static BufferedImage mergeImages(List<PreSignedUrlResponse> preSignedUrlResponseList) {
List<BufferedImage> imageList = new ArrayList<>();
int width = 0;
int maxHeight = 0;
for (PreSignedUrlResponse preSignedUrlResponse : preSignedUrlResponseList) {
try {
BufferedImage image = ImageIO.read(new URL(preSignedUrlResponse.getPreSignedUrl()));
imageList.add(image);
width += image.getWidth();
maxHeight = Math.max(image.getHeight(), maxHeight);
} catch (Exception e) {
}
}
BufferedImage merged = new BufferedImage(width, maxHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = (Graphics2D) merged.getGraphics();
int currenWidth = 0;
for (BufferedImage bufferedImage : imageList) {
graphics2D.drawImage(bufferedImage, currenWidth, 0, null);
currenWidth += bufferedImage.getWidth();
}
return merged;
}
private InputStream getInputStream(BufferedImage mergedImage) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
ImageIO.write(mergedImage, "jpg", byteArrayOutputStream);
byteArrayOutputStream.flush();
} catch (IOException e) {
return null;
}
InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
return inputStream;
}