그래서이 질문을 검색하여 많은 조회수를 얻었으므로 아래에 표시된 코드를 찾을 수있었습니다. ImageStack (ImageJ)에서 이미지를 가져오고 있으며 두 개의 이미지를 겹쳐서 dicom 형식 (.dcm)으로 만듭니다. 내 문제는 두 이미지가 서로 겹치기 때문에 투명하게 보이기를 바랍니다. 나는 오버랩 함수에 전달할 때 이미지가 다르고 많은 것을 시도했지만 이미지를 투명하게 만들 수 없다는 것을 확인했습니다. 오버랩 함수는 투명하지만 투명하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.BufferedImages를 겹쳐서 투명하게 만듭니다.
public BufferedImage overlay(BufferedImage bii, BufferedImage biii){
BufferedImage combined = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
Graphics2D go = combined.createGraphics();
image.setSlice(5);
ImagePlus hello = new ImagePlus();
hello.setImage(image.getImage());
BufferedImage bello = hello.getBufferedImage();
go.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
go.drawImage(bii,0, 0, null);
go.drawImage(biii,98, 98, null);
go.setComposite(AlphaComposite.Clear);
go.setComposite(AlphaComposite.Src);
//go.fillRect(0, 0, 256, 256);
go.dispose();
return combined;
}
주요 기능 :
ImageStack stack = image.getStack();
Calibration cal = image.getCalibration();
ImagePlus newImp = new ImagePlus();
stack.getSliceLabel(5);
stack.getProcessor(5);
newImp.setCalibration(cal);
ImageProcessor ip = stack.getProcessor(1); // specify number of slice
newImp.setProcessor(ip);
ImagePlus no3 = new ImagePlus();
no3.setImage(newImp.getImage());
BufferedImage bii= no3.getBufferedImage();
ImagePlus bob = new ImagePlus();
stack.getSliceLabel(33);
stack.getProcessor(33);
bob.setCalibration(cal);
ImageProcessor bobp = stack.getProcessor(22); // specify number of slice
bob.setProcessor(bobp);
ImagePlus hello = new ImagePlus();
hello.setImage(bob.getImage());
BufferedImage bello = hello.getBufferedImage();
BufferedImage overlayy = overlay(bii, bello);
frame2 = new NFrame(image.getTitle(), image, save);
JPanel pane = new JPanel(new BorderLayout());
JLabel jLabel = new JLabel(new ImageIcon(overlayy));
pane.add(jLabel);
frame2.add(pane);
frame2.setVisible(true);
desktop.add(frame2);
나는 당신이 한 것을 시도했지만 그것은 이미지를 투명하게 만들지 못했습니다. 같은 문제가 여전히 존재합니다. –
내 스크립트의 예상 결과를 보여주는 이미지를 추가했습니다. 위의 beanshell 코드를 실행할 때 얻지는 않습니까? –
좋아, 그래서 imp2.setRoi (roi1)를 사용해서 얻었습니다. 나는 beanshell 코드를 사용하지 않는다. 그래서 나는 그것을 얻지 못했다. 내가 오버레이를 시도했지만 그것은 내 작품을 보이지 않습니다. 또한 두 개 이상의 이미지에 대해이 작업을 수행 할 수 있습니까? –