OsiriX can only be installed on an Apple Mac OsiriX can only run on Apple's Operating Systems (from OS X 10.10 to macOS 10.15) OsiriX requires at least 6GB of. Thank you for using our Mac software portal. Unfortunately, there is no direct download for the Mac version of Weasis. To download the product, proceed to the developer's site via the link below. FDMLib cannot ensure the security of software that is hosted on third-party sites. Selenium for mac os. Weasis DICOM viewer is cross-platform, free/libre and open source software, multi-language and allows a flexible integration to PACS, RIS, HIS or PHR. This multi-platform DICOM viewer runs on Windows, Linux, and Mac OS X. It allows high-quality renderings with high performance through the OpenCV library. The latest version of Weasis is 3.6 on Mac Informer. It is a perfect match for Science in the Education category. The app is developed by Weasis Team and its user rating is 4.4 out of 5.
Weasis Dicom Viewer For Mac
Weasis For Mac
Weasis Dicom Viewer For Mac
Weasis For Mac
import java.awt.Color;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.Arrays;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.ImageWriter;
import javax.imageio.stream.MemoryCacheImageOutputStream;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.UID;
import org.dcm4che3.data.VR;
import org.dcm4che3.imageio.codec.BytesWithImageImageDescriptor;
import org.dcm4che3.imageio.codec.ImageDescriptor;
import org.dcm4che3.imageio.codec.ImageWriterFactory;
import org.dcm4che3.imageio.codec.ImageWriterFactory.ImageWriterParam;
import org.dcm4che3.imageio.plugins.dcm.DicomMetaData;
import org.dcm4che3.io.DicomInputStream;
import org.dcm4che3.io.DicomOutputStream;
import org.weasis.opencv.op.ImageProcessor;
publicclassImageProcessing{
publicstaticvoid main(String[] args)throwsIOException{
File srcImageFile =newFile('in.dcm');
File dstImageFile =newFile('out.dcm');
ImageReader reader =ImageIO.getImageReadersByFormatName('DICOM').next();
DicomInputStream dicomStream =newDicomInputStream(srcImageFile);
reader.setInput(dicomStream);
BufferedImage bi = reader.read(0, reader.getDefaultReadParam());
DicomMetaData metadata =(DicomMetaData) reader.getStreamMetadata();
Attributes ds = metadata.getAttributes();
Attributes fmi = metadata.getFileMetaInformation();
Rectangle2D shape =newRectangle2D.Float(0,0,200,100);
BufferedImage dst_bi =ImageProcessor.drawShape(bi, shape,Color.RED);
String tsuid = fmi.getString(Tag.TransferSyntaxUID, UID.ExplicitVRLittleEndian);
ImageWriterParam compressorParam =ImageWriterFactory.getImageWriterParam(tsuid);
ImageWriter imageWriter =ImageWriterFactory.getImageWriter(compressorParam);
try(DicomOutputStream dos =
newDicomOutputStream(newBufferedOutputStream(newFileOutputStream(dstImageFile)), tsuid);
ExtMemoryCacheImageOutputStream ios =newExtMemoryCacheImageOutputStream(newImageDescriptor(ds))){
dos.writeDataset(fmi, ds);
dos.writeHeader(Tag.PixelData, VR.OB,-1);
dos.writeHeader(Tag.Item,null,0);
imageWriter.setOutput(ios);
imageWriter.write(null,newIIOImage(dst_bi,null,null), imageWriter.getDefaultWriteParam());
int streamLength =(int) ios.getStreamPosition();
if((streamLength &1)!=0)
ios.write(0);
dos.writeHeader(Tag.Item,null, streamLength);
ios.setOutputStream(dos);
ios.flush();
dos.writeHeader(Tag.SequenceDelimitationItem,null,0);
}
}
staticfinalclassExtMemoryCacheImageOutputStreamextendsMemoryCacheImageOutputStream
implementsBytesWithImageImageDescriptor{
privatefinalExtFilterOutputStream stream;
privatefinalImageDescriptor imageDescriptor;
publicExtMemoryCacheImageOutputStream(ImageDescriptor imageDescriptor){
this(newExtFilterOutputStream(), imageDescriptor);
}
privateExtMemoryCacheImageOutputStream(ExtFilterOutputStream stream,ImageDescriptor imageDescriptor){
super(stream);
this.stream = stream;
this.imageDescriptor = imageDescriptor;
}
publicvoid setOutputStream(OutputStream stream){
this.stream.setOutputStream(stream);
}
@Override
publicImageDescriptor getImageDescriptor(){
return imageDescriptor;
}
@Override
publicByteBuffer getBytes()throwsIOException{
byte[] array =newbyte[8192];
int length =0;
int read;
while((read =this.read(array, length, array.length - length))>0){
if((length += read) array.length)
array =Arrays.copyOf(array, array.length <<1);
}
returnByteBuffer.wrap(array,0, length);
}
@Override
publicvoid flushBefore(long pos)throwsIOException{
if(stream.getOutputStream()!=null)
super.flushBefore(pos);
}
}
staticfinalclassExtFilterOutputStreamextendsFilterOutputStream{
publicExtFilterOutputStream(){
super(null);
}
publicOutputStream getOutputStream(){
returnsuper.out;
}
publicvoid setOutputStream(OutputStreamout){
super.out=out;
}
@Override
publicvoid write(byte[] b,int off,int len)throwsIOException{
out.write(b, off, len);
}
}
}