두 이미지 병합
Java에서 두 개의 이미지 (BufferedImage)를 병합해야합니다. 투명성이 없다면 문제가되지 않을 것입니다. 기본 이미지에는 이미 투명도가 있습니다. 나는 이것을 그대로 유지하고 두 번째 이미지에 "마스크"를 적용하고 싶습니다. 이 두 번째 이미지에는 불투명 픽셀이 없습니다. 사실 거의 완전히 투명합니다. 반사와 같은 일종의 "빛 효과"를 제공하기 위해 약간의 투명 픽셀이 약간 있습니다. 중요한 세부 사항 : 그래픽을 사용하여 화면에서이 작업을 수행하고 싶지 않습니다. 결과 병합으로 BufferedImage를 가져와야합니다.
누구든지 나를 도울 수 있습니까? 감사!
세부 정보 : 투명도를 유지하면서 두 이미지를 병합합니다. 이것이 내가해야 할 일입니다.
참고 : Java 의이 Set BufferedImage 알파 마스크는 투명도를 가진 두 이미지를 잘 처리하지 못하기 때문에 필요한 작업을 수행하지 않습니다. 첫 번째 그림 투명도를 수정합니다.
투명도가있는 새 BufferedImage를 만든 다음 다른 두 이미지 (전체 또는 반투명)를 그 위에 칠하면됩니다. 다음과 같이 표시됩니다.
샘플 코드 (이미지는 'image.png'및 'overlay.png'라고 함) :
File path = ... // base path of the images
// load source images
BufferedImage image = ImageIO.read(new File(path, "image.png"));
BufferedImage overlay = ImageIO.read(new File(path, "overlay.png"));
// create the new image, canvas size is the max. of both image sizes
int w = Math.max(image.getWidth(), overlay.getWidth());
int h = Math.max(image.getHeight(), overlay.getHeight());
BufferedImage combined = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
// paint both images, preserving the alpha channels
Graphics g = combined.getGraphics();
g.drawImage(image, 0, 0, null);
g.drawImage(overlay, 0, 0, null);
// Save as new image
ImageIO.write(combined, "PNG", new File(path, "combined.png"));
구체적인 답변을 드릴 수는 없지만 여기 java.awt.AlphaComposite가 친구입니다. 두 이미지를 병합하는 방법을 완전히 제어 할 수 있습니다. 그러나 사용하기가 간단하지 않습니다. 먼저 그래픽 이론을 약간 배워야합니다.
달성하려는 효과에 대해 더 많이 알지 못하고 BufferedImage에 바로 그릴 수도 있다는 점을 지적하겠습니다. 따라서 화면에서 할 수있는 모든 작업은 이미지 자체에서 바로 할 수 있습니다.
따라서 원하는 모든 것이 다른 하나 위에 그려져 있다면 정말 쉽습니다. 기본 이미지에 대한 Graphics 개체를 잡고 다른 이미지를 그 위에 그립니다.
다시 말하지만, 정확한 효과에 따라 작동하지 않을 수 있습니다. 자세한 내용은 더 나은 도움을 줄 것입니다. 예를 들어, 다른 응답자가 언급 한 AlphaComposite의 작업입니까, 아니면 사용자 지정 ImageOp (또는 기존 ImageOps의 일부 조합)입니까?
참고 URL : https://stackoverflow.com/questions/2318020/merging-two-images
'Nice programing' 카테고리의 다른 글
node.js 및 express를 사용하여 이미지를 업로드, 표시 및 저장하는 방법 (0) | 2020.10.11 |
---|---|
언제 목록을 사용 하시겠습니까 (0) | 2020.10.11 |
HTML에서 선택 방지 (0) | 2020.10.11 |
base () 및 this () 생성자 모범 사례 (0) | 2020.10.11 |
경로와 함께 "시작"을 사용하고 공백이있는 명령을 사용하여 Windows에서 배치 파일을 만드는 방법 (0) | 2020.10.11 |