@Override public PlanarImage getSourceRenderedImage() { if (sourceImage != null) { return sourceImage.getImage(preprocessing); } return null; }
private static List<ReferencedSeries> buildReferences(ImageElement img) { String seriesUUID = (String) img.getTagValue(TagW.get("SeriesInstanceUID")); //$NON-NLS-1$ if (seriesUUID == null) { seriesUUID = java.util.UUID.randomUUID().toString(); img.setTag(TagW.get("SeriesInstanceUID"), seriesUUID); //$NON-NLS-1$ } String uid = (String) img.getTagValue(TagW.get("SOPInstanceUID")); //$NON-NLS-1$ if (uid == null) { uid = java.util.UUID.randomUUID().toString(); img.setTag(TagW.get("SOPInstanceUID"), uid); //$NON-NLS-1$ } List<Integer> frameList = new ArrayList<>(1); int frames = img.getMediaReader().getMediaElementNumber(); if (frames > 1 && img.getKey() instanceof Integer) { frameList.add((Integer) img.getKey()); } return Arrays.asList(new ReferencedSeries(seriesUUID, Arrays.asList(new ReferencedImage(uid, frameList)))); } }
public void setPixelSize(double pixelSize) { if (MathUtil.isEqual(pixelSizeX, pixelSizeY)) { setPixelSize(pixelSize, pixelSize); } else if (pixelSizeX < pixelSizeY) { setPixelSize(pixelSize, (pixelSizeY / pixelSizeX) * pixelSize); } else { setPixelSize((pixelSizeX / pixelSizeY) * pixelSize, pixelSize); } }
public static PlanarImage getDefaultRenderedImage(ImageElement image, PlanarImage source, boolean pixelPadding) { return getDefaultRenderedImage(image, source, image.getDefaultWindow(pixelPadding), image.getDefaultLevel(pixelPadding), true); }
private void updateTags(ImageElement image) { this.image.setTag(TagW.ImageWidth, image.getTagValue(TagW.ImageWidth)); this.image.setTag(TagW.ImageHeight, image.getTagValue(TagW.ImageHeight)); }
public boolean hasSameSize(ImageElement image) { if (image != null) { PlanarImage img = getImage(); PlanarImage img2 = image.getImage(); if (img != null && img2 != null && getRescaleWidth(img.width()) == image.getRescaleWidth(img2.width()) && getRescaleHeight(img.height()) == image.getRescaleHeight(img2.height())) { return true; } } return false; }
String sopInstanceUID = Objects.requireNonNull((String) imageElement.getTagValue(TagD.getUID(Level.INSTANCE))); File imgFile = imageElement.getFileCache().getOriginalFile().orElse(null); if (imgFile == null || !imageElement.getMimeType().contains("jpeg") //$NON-NLS-1$ || !imageInfo.getCurrentValues().equals(imageInfo.getDefaultValues())) { PlanarImage transformedImage = imageElement.getImage(opManager, false); LOGGER.error("Cannot Transform to jpeg {}", imageElement.getName()); //$NON-NLS-1$ return false; DicomMediaUtils.fillAttributes(AcquireManager.GLOBAL.getTagEntrySetIterator(), attrs); DicomMediaUtils.fillAttributes(imageInfo.getSeries().getTagEntrySetIterator(), attrs); DicomMediaUtils.fillAttributes(imageElement.getTagEntrySetIterator(), attrs); if (Unit.PIXEL != imageElement.getPixelSpacingUnit()) { attrs.setString(Tag.PixelSpacingCalibrationDescription, VR.LO, "Used fiducial"); //$NON-NLS-1$ double unitRatio = imageElement.getPixelSize() * Unit.MILLIMETER.getConversionRatio(imageElement.getPixelSpacingUnit().getConvFactor()); attrs.setDouble(Tag.PixelSpacing, VR.DS, unitRatio, unitRatio); Dicomizer.jpeg(attrs, imgFile, new File(exportDirDicom, sopInstanceUID), false); } catch (Exception e) { LOGGER.error("Cannot Dicomize {}", imageElement.getName(), e); //$NON-NLS-1$ return false; GraphicModel grModel = (GraphicModel) imageElement.getTagValue(TagW.PresentationModel); if (grModel != null && grModel.hasSerializableGraphics()) { Point2D offset = null;
public void drawScale(Graphics2D g2d, Rectangle bound, float fontHeight) { ImageElement image = view2DPane.getImage(); PlanarImage source = image.getImage(); if (source == null) { return; double scale = image.getPixelSize() / zoomFactor; double scaleSizex = ajustShowScale(scale, (int) Math.min(zoomFactor * source.width() * image.getRescaleX(), bound.width / 2.0)); Unit[] unit = { image.getPixelSpacingUnit() }; String str = ajustLengthDisplay(scaleSizex * scale, unit); g2d.setStroke(new BasicStroke(1.0F)); String pixSizeDesc = image.getPixelSizeCalibrationDescription(); if (StringUtil.hasText(pixSizeDesc)) { AbstractGraphicLabel.paintFontOutline(g2d, pixSizeDesc, (float) (posx + scaleSizex + 5), (int) Math.min(zoomFactor * source.height() * image.getRescaleY(), bound.height / 2.0)); Unit[] unit = { image.getPixelSpacingUnit() }; String str = ajustLengthDisplay(scaleSizeY * scale, unit);
if (!img.equals(oldImage)) { updateGraphics = true; actionsInView.put(ActionW.SPATIAL_UNIT.cmd(), img.getPixelSpacingUnit()); if (eventManager.getSelectedViewPane() == this) { ActionState spUnitAction = eventManager.getAction(ActionW.SPATIAL_UNIT); PlanarImage image = img.getImage(); if (image != null) { int elemSize = CvType.ELEM_SIZE(image.type()); GraphicModel modelList = (GraphicModel) img.getTagValue(TagW.PresentationModel); img.setTag(TagW.PresentationModel, modelList);
@Override public void handleImageOpEvent(ImageOpEvent event) { OpEvent type = event.getEventType(); if (OpEvent.ImageChange.equals(type)) { setParam(P_IMAGE_ELEMENT, event.getImage()); } else if (OpEvent.ResetDisplay.equals(type) || OpEvent.SeriesChange.equals(type)) { ImageElement img = event.getImage(); setParam(P_IMAGE_ELEMENT, img); if (img != null) { if (!img.isImageAvailable()) { // Ensure to load image before calling the default preset that requires pixel min and max img.getImage(); } boolean pixelPadding = LangUtil.getNULLtoTrue((Boolean) getParam(ActionW.IMAGE_PIX_PADDING.cmd())); setParam(ActionW.WINDOW.cmd(), img.getDefaultWindow(pixelPadding)); setParam(ActionW.LEVEL.cmd(), img.getDefaultLevel(pixelPadding)); setParam(ActionW.LEVEL_MIN.cmd(), img.getMinValue(null, pixelPadding)); setParam(ActionW.LEVEL_MAX.cmd(), img.getMaxValue(null, pixelPadding)); } } }
if (media instanceof ImageElement) { final ImageElement image = (ImageElement) media; PlanarImage imgPl = image.getImage(opManager); if (imgPl != null) { PlanarImage img = image.getRenderedImage(imgPl); final PlanarImage thumb = createThumbnail(img); if (thumb != null) { image.setTag(TagW.ThumbnailPath, file.getPath()); thumbnailPath = file; return; if (!keepMediaCache) { image.removeImageFromCache();
@Override public void run() { PlanarImage img = null; // Get the final that contain the thumbnail when the uncompress mode is activated File file = diskObject.getFile(); if (file != null && file.getName().endsWith(".wcv")) { //$NON-NLS-1$ File thumbFile = new File(ImageFiler.changeExtension(file.getPath(), ".jpg")); //$NON-NLS-1$ if (thumbFile.canRead()) { img = ImageProcessor.readImage(thumbFile); } } if (img == null) { img = diskObject.getRenderedImage(diskObject.getImage(null)); } if (img == null) { return; } final BufferedImage tIcon = ImageConversion .toBufferedImage((PlanarImage) ImageProcessor.buildThumbnail(img, ThumbnailRenderer.ICON_DIM, true)); // Prevent to many files open on Linux (Ubuntu => 1024) and close image stream diskObject.removeImageFromCache(); GuiExecutor.instance().execute(() -> { if (tIcon != null) { cachedThumbnails.put(diskObject.getMediaURI(), new ThumbnailIcon(tIcon)); } thumbnailList.getThumbnailListModel().notifyAsUpdated(index); }); }
String uuid = (String) imageElement.getTagValue(tagUid); if (uuid == null) { uuid = UIDUtils.createUID(); imageElement.setTag(tagUid, uuid); Optional<File> file = imageElement.getFileCache().getOriginalFile(); if (file.isPresent()) { Date date = null; imageElement.setTagNoNull(TagD.get(Tag.DateOfSecondaryCapture), directory.getDate(ExifDirectoryBase.TAG_DATETIME_DIGITIZED)); imageElement.setTagNoNull(TagD.get(Tag.Manufacturer), ifd0.getString(ExifDirectoryBase.TAG_MAKE)); imageElement.setTagNoNull(TagD.get(Tag.ManufacturerModelName), ifd0.getString(ExifDirectoryBase.TAG_MODEL)); .from(Instant.ofEpochMilli(imageElement.getLastModified()).atZone(ZoneId.systemDefault())) : TagUtil.toLocalDateTime(date); imageElement.setTagNoNull(TagD.get(Tag.ContentDate), dateTime.toLocalDate()); imageElement.setTagNoNull(TagD.get(Tag.ContentTime), dateTime.toLocalTime()); imageElement.setTagNoNull(TagD.get(Tag.ImageComments), file.get().getName());
ImageElement img = acquireImageInfo.getImage(); if (img != image) { img.setPixelSpacingUnit(image.getPixelSpacingUnit()); img.setPixelSize(image.getPixelSize());
protected int getImageSize(E img, TagW tag1, TagW tag2) { Integer size = (Integer) img.getTagValue(tag1); if (size == null) { size = (Integer) img.getTagValue(tag2); } return (size == null) ? ImageFiler.TILESIZE : size; }
public static boolean applyPresentationModel(ImageElement img) { if (img != null) { byte[] prBinary = TagW.getTagValue(img, TagW.PresentationModelBirary, byte[].class); if (prBinary != null) { GraphicModel model = XmlSerializer.buildPresentationModel(prBinary); img.setTag(TagW.PresentationModel, model); img.setTag(TagW.PresentationModelBirary, null); return true; } } return false; } }
removeParam(P_PR_ELEMENT); if (img != null) { if (!img.isImageAvailable()) { img.getImage(); setParam(P_IMAGE_ELEMENT, img); if (img != null) { if (!img.isImageAvailable()) { img.getImage();
boolean overlays = LangUtil.getNULLtoFalse((Boolean) image.getTagValue(TagW.HasOverlay)); if (overlays && image.getMediaReader() instanceof DicomMediaIO) { DicomMediaIO reader = (DicomMediaIO) image.getMediaReader(); try { if (image.getKey() instanceof Integer) { int frame = (Integer) image.getKey(); Integer height = TagD.getTagValue(image, Tag.Rows, Integer.class); Integer width = TagD.getTagValue(image, Tag.Columns, Integer.class);
private void setPreset(PresetWindowLevel preset, ImageElement img, boolean pixelPadding) { boolean p = preset != null; PRSpecialElement pr = (PRSpecialElement) getParam(P_PR_ELEMENT); setParam(ActionW.PRESET.cmd(), preset); setParam(ActionW.DEFAULT_PRESET.cmd(), true); setParam(ActionW.WINDOW.cmd(), p ? preset.getWindow() : img.getDefaultWindow(pixelPadding)); setParam(ActionW.LEVEL.cmd(), p ? preset.getLevel() : img.getDefaultLevel(pixelPadding)); setParam(ActionW.LEVEL_MIN.cmd(), img.getMinValue(pr, pixelPadding)); setParam(ActionW.LEVEL_MAX.cmd(), img.getMaxValue(pr, pixelPadding)); setParam(ActionW.LUT_SHAPE.cmd(), p ? preset.getLutShape() : img.getDefaultShape(pixelPadding)); }
@Override protected void afterEntryRemove(ImageElement key, PlanarImage img) { if (key != null) { key.setTag(TagW.ImageCache, false); MediaReader reader = key.getMediaReader(); if (reader != null) { // Close the image stream reader.close(); } } if (img != null) { img.release(); } } };