Roi getImageRoi(Roi roi, int opacity, int size, int options) { if (size<=0) return roi; Rectangle r = roi.getBounds(); byte[] bytes = new byte[size]; for (int i=0; i<size; i++) bytes[i] = (byte)getByte(COORDINATES+i); ImagePlus imp = new Opener().deserialize(bytes); ImageRoi roi2 = new ImageRoi(r.x, r.y, imp.getProcessor()); roi2.setOpacity(opacity/255.0); if ((options&ZERO_TRANSPARENT)!=0) roi2.setZeroTransparent(true); return roi2; }
public void draw(Graphics g) { Graphics2D g2d = (Graphics2D)g; double mag = getMagnification(); int sx2 = screenX(x+width); int sy2 = screenY(y+height); Composite saveComposite = null; if (composite!=null) { saveComposite = g2d.getComposite(); g2d.setComposite(composite); } Image img2 = img; if (angle!=0.0) { ImageProcessor ip = new ColorProcessor(img); ip.setInterpolate(true); ip.setBackgroundValue(0.0); ip.rotate(angle); if (zeroTransparent) ip = makeZeroTransparent(ip, true); img2 = ip.createImage(); } g.drawImage(img2, screenX(x), screenY(y), sx2, sy2, 0, 0, img.getWidth(null), img.getHeight(null), null); if (composite!=null) g2d.setComposite(saveComposite); if (isActiveOverlayRoi() && !overlay) super.draw(g); }
public synchronized Object clone() { ImageRoi roi2 = (ImageRoi)super.clone(); ImagePlus imp = new ImagePlus("", img); roi2.setProcessor(imp.getProcessor()); roi2.setOpacity(getOpacity()); roi2.zeroTransparent = !zeroTransparent; roi2.setZeroTransparent(zeroTransparent); return roi2; }
/** * Update the overlay */ void updateResultOverlay() { if( null != clusteredImage ) { int slice = image.getCurrentSlice(); ImageRoi roi = null; roi = new ImageRoi(0, 0, clusteredImage.getImageStack().getProcessor(slice)); roi.setOpacity((double) opacitySlider.getValue()/100); image.setOverlay(new Overlay(roi)); } }
private void checkForOverlay(ImagePlus imp) { overlayImage = getOverlayImage(imp); if (overlayImage==null && paintOnOverlay) { ImageProcessor overlayIP = new ColorProcessor(imp.getWidth(), imp.getHeight()); ImageRoi imageRoi = new ImageRoi(0, 0, overlayIP); imageRoi.setZeroTransparent(true); imageRoi.setName("[Brush]"); Overlay overlay = imp.getOverlay(); if (overlay==null) overlay = new Overlay(); overlay.add(imageRoi); overlay.selectable(false); imp.setOverlay(overlay); overlayImage = imageRoi; } }
public boolean showImageDialog(String name) { ImageRoi iRoi = (ImageRoi)roi; boolean zeroTransparent = iRoi.getZeroTransparent(); GenericDialog gd = new GenericDialog("Image ROI Properties"); gd.addStringField("Name:", name, 15); gd.addNumericField("Opacity (0-100%):", iRoi.getOpacity()*100.0, 0); gd.addCheckbox("Transparent background", zeroTransparent); if (addToOverlay) gd.addCheckbox("New Overlay", false); gd.showDialog(); if (gd.wasCanceled()) return false; name = gd.getNextString(); roi.setName(name.length()>0?name:null); double opacity = gd.getNextNumber()/100.0; iRoi.setOpacity(opacity); boolean zeroTransparent2 = gd.getNextBoolean(); if (zeroTransparent!=zeroTransparent2) iRoi.setZeroTransparent(zeroTransparent2); boolean newOverlay = addToOverlay?gd.getNextBoolean():false; if (newOverlay) roi.setName("new-overlay"); return true; }
opacity = ((ImageRoi)rpRoi).getOpacity(); if (rpRoi instanceof PointRoi) { pointType = ((PointRoi)rpRoi).getPointType(); ((ImageRoi)roi).setOpacity(opacity); if (roi instanceof PointRoi) { if (pointType!=-1) ((PointRoi)roi).setPointType(pointType); ((ImageRoi)roi).setOpacity(opacity);
@Override public ImageRoi convert(final RealMaskRealInterval mask) { // Wrap mask as RRARI final RealRandomAccessibleRealInterval<BoolType> rrari = Masks .toRealRandomAccessibleRealInterval(mask); // Convert the RRARI to a RAI whose min is (0, 0), this will ensure it // displays properly final RandomAccessible<BoolType> raster = Views.raster(rrari); final RandomAccessible<BoolType> translate = Views.translate(raster, new long[] { (long) -mask.realMin(0), (long) -mask.realMin(1) }); final RandomAccessibleInterval<BoolType> rai = Views.interval(translate, new long[] { 0, 0 }, new long[] { (long) (mask.realMax(0) - mask.realMin( 0)), (long) (mask.realMax(1) - mask.realMin(1)) }); // Convert RAI to ImagePlus final Dataset d = datasetService.create(rai); final ImagePlus ip = convertService.convert(d, ImagePlus.class); return new ImageRoi((int) mask.realMin(0), (int) mask.realMin(1), ip .getBufferedImage()); }
checkForOverlay(imp); if (overlayImage!=null) ip = overlayImage.getProcessor(); else ip = imp.getProcessor(); ip.lineTo(x, y); if (overlayImage!=null) { overlayImage.setProcessor(ip); imp.draw(); } else
private int saveImageRoi(ImageRoi roi, int options) { byte[] bytes = roi.getSerializedImage(); int imageSize = bytes.length; byte[] data2 = new byte[HEADER_SIZE+HEADER2_SIZE+imageSize+roiNameSize+roiPropsSize]; System.arraycopy(data, 0, data2, 0, HEADER_SIZE); data = data2; putShort(RoiDecoder.SUBTYPE, RoiDecoder.IMAGE); for (int i=0; i<imageSize; i++) putByte(HEADER_SIZE+i, bytes[i]&255); int hdr2Offset = HEADER_SIZE+imageSize; double opacity = roi.getOpacity(); putByte(hdr2Offset+RoiDecoder.IMAGE_OPACITY, (int)(opacity*255.0)); putInt(hdr2Offset+RoiDecoder.IMAGE_SIZE, imageSize); if (roi.getZeroTransparent()) options |= RoiDecoder.ZERO_TRANSPARENT; putHeader2(roi, hdr2Offset); return options; }
public void mouseDragged(ImagePlus imp, MouseEvent e) { if (imp == null || ic == null) return; roi = imp.getRoi(); if (roi == null) return; isImageRoi = roi instanceof ImageRoi; if (isImageRoi) ((ImageRoi)roi).setZeroTransparent(true); if ( e.isAltDown() || e.isShiftDown() ) moveRoi(e.getX(), e.getY()); else rotateRoi(e.getX(), e.getY()); }
if (overlay2.size()==1 && (overlay2.get(0) instanceof ImageRoi)) { ImageRoi iRoi = (ImageRoi)overlay2.get(0); ImageProcessor ip = iRoi.getProcessor(); if (ip.getWidth()!=mask.getWidth() || ip.getHeight()!=mask.getHeight()) return mask;
final Roi roi = new ImageRoi(0, 0, overlay.getProcessor()); roi.setName(OVERLAY_IDENTIFIER); ((ImageRoi) roi).setOpacity(OVERLAY_OPACITY_PERCENT / 100.0); if (overlayList == null) overlayList = new Overlay();
private void checkForOverlay(ImagePlus imp) { overlayImage = getOverlayImage(imp); if (overlayImage==null && paintOnOverlay) { ImageProcessor overlayIP = new ColorProcessor(imp.getWidth(), imp.getHeight()); ImageRoi imageRoi = new ImageRoi(0, 0, overlayIP); imageRoi.setZeroTransparent(true); imageRoi.setName("[Brush]"); Overlay overlay = imp.getOverlay(); if (overlay==null) overlay = new Overlay(); overlay.add(imageRoi); overlay.selectable(false); imp.setOverlay(overlay); overlayImage = imageRoi; } }
public boolean showImageDialog(String name) { ImageRoi iRoi = (ImageRoi)roi; boolean zeroTransparent = iRoi.getZeroTransparent(); GenericDialog gd = new GenericDialog("Image ROI Properties"); gd.addStringField("Name:", name, 15); gd.addNumericField("Opacity (0-100%):", iRoi.getOpacity()*100.0, 0); gd.addCheckbox("Transparent background", zeroTransparent); if (addToOverlay) gd.addCheckbox("New Overlay", false); gd.showDialog(); if (gd.wasCanceled()) return false; name = gd.getNextString(); roi.setName(name.length()>0?name:null); double opacity = gd.getNextNumber()/100.0; iRoi.setOpacity(opacity); boolean zeroTransparent2 = gd.getNextBoolean(); if (zeroTransparent!=zeroTransparent2) iRoi.setZeroTransparent(zeroTransparent2); boolean newOverlay = addToOverlay?gd.getNextBoolean():false; if (newOverlay) roi.setName("new-overlay"); return true; }
opacity = ((ImageRoi)rpRoi).getOpacity(); if (rpRoi instanceof PointRoi) { pointType = ((PointRoi)rpRoi).getPointType(); ((ImageRoi)roi).setOpacity(opacity); if (roi instanceof PointRoi) { if (pointType!=-1) ((PointRoi)roi).setPointType(pointType); ((ImageRoi)roi).setOpacity(opacity);
checkForOverlay(imp); if (overlayImage!=null) ip = overlayImage.getProcessor(); else ip = imp.getProcessor(); ip.lineTo(x, y); if (overlayImage!=null) { overlayImage.setProcessor(ip); imp.draw(); } else
private int saveImageRoi(ImageRoi roi, int options) { byte[] bytes = roi.getSerializedImage(); int imageSize = bytes.length; byte[] data2 = new byte[HEADER_SIZE+HEADER2_SIZE+imageSize+roiNameSize+roiPropsSize]; System.arraycopy(data, 0, data2, 0, HEADER_SIZE); data = data2; putShort(RoiDecoder.SUBTYPE, RoiDecoder.IMAGE); for (int i=0; i<imageSize; i++) putByte(HEADER_SIZE+i, bytes[i]&255); int hdr2Offset = HEADER_SIZE+imageSize; double opacity = roi.getOpacity(); putByte(hdr2Offset+RoiDecoder.IMAGE_OPACITY, (int)(opacity*255.0)); putInt(hdr2Offset+RoiDecoder.IMAGE_SIZE, imageSize); if (roi.getZeroTransparent()) options |= RoiDecoder.ZERO_TRANSPARENT; putHeader2(roi, hdr2Offset); return options; }
public void mouseDragged(ImagePlus imp, MouseEvent e) { if (imp == null || ic == null) return; roi = imp.getRoi(); if (roi == null) return; isImageRoi = roi instanceof ImageRoi; if (isImageRoi) ((ImageRoi)roi).setZeroTransparent(true); if ( e.isAltDown() || e.isShiftDown() ) moveRoi(e.getX(), e.getY()); else rotateRoi(e.getX(), e.getY()); }
if (overlay2.size()==1 && (overlay2.get(0) instanceof ImageRoi)) { ImageRoi iRoi = (ImageRoi)overlay2.get(0); ImageProcessor ip = iRoi.getProcessor(); if (ip.getWidth()!=mask.getWidth() || ip.getHeight()!=mask.getHeight()) return mask;