@SuppressWarnings("restriction") public static TCImageDocument create( TCObject tc, MimeType mimeType, String filename, InputStream in, String description) throws Exception { mimeType = checkMimeType(mimeType); ByteArrayOutputStream out = null; try { BufferedImage image = null; if (MimeType.ImageJPEG.equals(mimeType)) { try { com.sun.image.codec.jpeg.JPEGImageDecoder decoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGDecoder(in); image = decoder.decodeAsBufferedImage(); } catch (Exception e) { log.warn(null, e); } } if (image == null) { image = ImageIO.read(in); } TCReferencedInstance ref = createReferencedInstance( tc, UID.MultiFrameTrueColorSecondaryCaptureImageStorage, MODALITY); DicomObject metaData = TCDocumentObject.createDicomMetaData( mimeType, filename, description, ref, tc.getPatientId(), tc.getPatientIdIssuer(), tc.getPatientName(), MODALITY); metaData.putInt(Tag.NumberOfFrames, VR.IS, 1); return new TCImageDocument(mimeType, ref, metaData, image); } finally { if (in != null) { try { in.close(); } catch (Exception e) { } } if (out != null) { try { out.close(); } catch (Exception e) { } } } }
public static TCEncapsulatedDocument create( TCObject tc, MimeType mimeType, String filename, InputStream in, String description) throws Exception { if (mimeType == null || !DOC_TYPES.contains(mimeType.getDocumentType())) { throw new Exception("Mime-Type is not supported (" + mimeType + ")"); } TCReferencedInstance ref = createReferencedInstance(tc, UID.EncapsulatedPDFStorage, MODALITY); DicomObject metaData = TCDocumentObject.createDicomMetaData( mimeType, filename, description, ref, tc.getPatientId(), tc.getPatientIdIssuer(), tc.getPatientName(), MODALITY); metaData.putString(Tag.TransferSyntaxUID, VR.UI, UID.ExplicitVRLittleEndian); metaData.putString( Tag.DocumentTitle, VR.ST, description != null && !description.isEmpty() ? description : getFileName(filename)); metaData.putString(Tag.MIMETypeOfEncapsulatedDocument, VR.LO, mimeType.getMimeTypeString()); metaData.putString(Tag.BurnedInAnnotation, VR.CS, "NO"); // $NON-NLS-1$ metaData.putSequence(Tag.ConceptNameCodeSequence, 0); try { return new TCEncapsulatedDocument(mimeType, ref, metaData, IOUtils.toByteArray(in)); } finally { if (in != null) { in.close(); } } }