public static Codec getCodec(String mimeType, String preferredCodec) { Codec codec = null; synchronized (BundleTools.CODEC_PLUGINS) { for (Codec c : BundleTools.CODEC_PLUGINS) { if (c.isMimeTypeSupported(mimeType)) { if (c.getCodecName().equals(preferredCodec)) { codec = c; break; } // If the preferred codec cannot be find, the first-found codec is retained if (codec == null) { codec = c; } } } return codec; } }
public static MediaReader getMedia(File file, boolean systemReader) { if (file != null && file.canRead()) { // If file has been downloaded or copied boolean cache = file.getPath().startsWith(AppProperties.FILE_CACHE_DIR.getPath()); String mimeType = MimeInspector.getMimeType(file); if (mimeType != null) { Codec codec = BundleTools.getCodec(mimeType, "dcm4che"); //$NON-NLS-1$ if (codec != null) { MediaReader mreader = codec.getMediaIO(file.toURI(), mimeType, null); if (cache) { mreader.getFileCache().setOriginalTempFile(file); } return mreader; } } if (systemReader) { MediaReader mreader = new DefaultMimeIO(file.toURI(), null); if (cache) { mreader.getFileCache().setOriginalTempFile(file); } return mreader; } } return null; }
if (isDicomMedia(mediaElement) && codec != null && codec.isMimeTypeSupported("application/dicom")) { //$NON-NLS-1$ if (reader.getMediaElement() == null) {
@Override public String[] getReaderDescription() { return new String[] { "Image Codec: " + codec.getCodecName(), "Version: " + Core.VERSION, "Supports the common types of image files (JPEG, TIFF, PNG...)" }; //$NON-NLS-1$ }
public static void setImageDecodeFilters(JFileChooser chooser) { List<String> namesList = BundleTools.CODEC_PLUGINS.stream().flatMap(c -> Arrays.asList(c.getReaderExtensions()).stream()) .distinct().sorted().collect(Collectors.toList());
for (File file : selectedFiles) { if (MimeInspector.isMatchingMimeTypeFromMagicNumber(file, DicomMediaIO.MIMETYPE)) { MediaReader reader = codec.getMediaIO(file.toURI(), DicomMediaIO.MIMETYPE, null); if (reader != null) { if (reader.getMediaElement() == null) {
private MediaSeries buildSeriesFromMediaElement(E mediaElement) { if (mediaElement != null) { MediaReader reader = mediaElement.getMediaReader(); TagW tname; String tvalue; Codec codec = reader.getCodec(); String sUID; String gUID; if (isDicomMedia(mediaElement) && codec != null && codec.isMimeTypeSupported("application/dicom")) { //$NON-NLS-1$ if (reader.getMediaElement() == null) { // DICOM is not readable return null; } sUID = (String) reader.getTagValue(TagW.get("SeriesInstanceUID")); //$NON-NLS-1$ gUID = (String) reader.getTagValue(TagW.get("PatientID")); //$NON-NLS-1$ tname = TagW.get("PatientName"); //$NON-NLS-1$ tvalue = (String) reader.getTagValue(tname); } else { sUID = mediaElement.getMediaURI().toString(); gUID = sUID; tname = TagW.FileName; tvalue = mediaElement.getName(); } return ViewerPluginBuilder.buildMediaSeriesWithDefaultModel(reader, gUID, tname, tvalue, sUID); } return null; }
private static void registerCodecPlugins(Codec codec) { if (codec != null && !BundleTools.CODEC_PLUGINS.contains(codec)) { BundleTools.CODEC_PLUGINS.add(codec); LOGGER.info("Register Image Codec Plug-in: {}", codec.getCodecName()); //$NON-NLS-1$ } }
@Override public synchronized List<Codec> getCodecPlugins() { ArrayList<Codec> codecPlugins = new ArrayList<>(1); synchronized (BundleTools.CODEC_PLUGINS) { for (Codec codec : BundleTools.CODEC_PLUGINS) { if (codec != null && "Sun java imageio".equals(codec.getCodecName()) == false //$NON-NLS-1$ && codec.isMimeTypeSupported("application/dicom") && !codecPlugins.contains(codec)) { //$NON-NLS-1$ codecPlugins.add(codec); } } } return codecPlugins; }
Codec codec = BundleTools.getCodec(mimeType, null); if (codec != null) { MediaReader reader = codec.getMediaIO(file.toURI(), mimeType, null); if (reader != null) { if (series == null) {
@Override public synchronized void serviceChanged(ServiceEvent event) { ServiceReference<?> sRef = event.getServiceReference(); BundleContext context = AppProperties.getBundleContext(sRef); Codec codec = null; try { codec = (Codec) context.getService(sRef); } catch (RuntimeException e) { // TODO find why sometimes service cannot be returned LOGGER.info("Cannot get service of {}", sRef.getBundle()); //$NON-NLS-1$ } if (codec == null) { return; } // TODO manage when several identical MimeType, register the default one if (event.getType() == ServiceEvent.REGISTERED) { registerCodecPlugins(codec); } else if (event.getType() == ServiceEvent.UNREGISTERING) { if (BundleTools.CODEC_PLUGINS.contains(codec)) { LOGGER.info("Unregister Image Codec Plug-in: {}", codec.getCodecName()); //$NON-NLS-1$ BundleTools.CODEC_PLUGINS.remove(codec); } // Unget service object and null references. context.ungetService(sRef); } }