示例#1
0
        /// <summary>
        /// Loads properties from a dicom file
        /// </summary>
        /// <param name="dicomFile"></param>
        public DicomSeries(Dicom.DicomFile dicomFile)
        {
            Instances = new List <Dicom.DicomFile>();

            try
            {
                SeriesInstanceUid = dicomFile.Dataset.Get <string>(Dicom.DicomTag.SeriesInstanceUID);
                SeriesNumber      = dicomFile.Dataset.Get <string>(Dicom.DicomTag.SeriesNumber);
                Modality          = dicomFile.Dataset.Get <string>(Dicom.DicomTag.Modality);
                SeriesDescription = dicomFile.Dataset.Get <string>(Dicom.DicomTag.SeriesDescription);
                StudyInstanceUid  = dicomFile.Dataset.Get <string>(Dicom.DicomTag.StudyInstanceUID);

                //try generate the thumbnail

                if (Thumbnail == null)
                {
                    if (dicomFile.Dataset.Contains(Dicom.DicomTag.PixelData))
                    {
                        var             dicomImage  = new Dicom.Imaging.DicomImage(dicomFile.Dataset);
                        WriteableBitmap dicomBitmap = dicomImage.RenderImage(0).As <WriteableBitmap>();
                        Thumbnail = dicomBitmap;
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.InnerException);
            }
        }
示例#2
0
        public void Print(Graphics graphics, RectangleF box, int imageResolution)
        {
            var state = graphics.Save();

            FillBox(box, graphics);

            var imageBox = box;

            if (FilmBox.Trim == "YES")
            {
                imageBox.Inflate(-BORDER, -BORDER);
            }

            if (ImageSequence != null && ImageSequence.Contains(DicomTag.PixelData))
            {
                Image bitmap = null;
                try
                {
                    var image = new Dicom.Imaging.DicomImage(ImageSequence);
                    var frame = image.RenderImage(0);

                    bitmap = frame;// new Bitmap(frame);
                    //frame.Dispose();

                    DrawBitmap(graphics, box, bitmap, imageResolution);
                }
                finally
                {
                    if (bitmap != null)
                    {
                        bitmap.Dispose();
                    }
                }
            }

            graphics.Restore(state);
        }
示例#3
0
        public void Print(Graphics graphics, RectangleF box, int imageResolution)
        {
            var state = graphics.Save();

            FillBox(box, graphics);

            var imageBox = box;
            if (FilmBox.Trim == "YES")
            {
                imageBox.Inflate(-BORDER, -BORDER);
            }

            if (ImageSequence != null && ImageSequence.Contains(DicomTag.PixelData))
            {
                Image bitmap = null;
                try
                {
                var image = new Dicom.Imaging.DicomImage(ImageSequence);
                    var frame = image.RenderImage(0);

                    bitmap = frame;// new Bitmap(frame);
                    //frame.Dispose();

                    DrawBitmap(graphics, box, bitmap, imageResolution);
                }
                finally
                {
                    if (bitmap != null)
                    {
                bitmap.Dispose();
            }
                }
            }

            graphics.Restore(state);
        }
        private void btn自动生成虚拟内窥视频_Click(object sender, RoutedEventArgs e)
        {
            string zipFileName = SelectedDicomPackageLocalPath;
            string tmpFolder   = Path.Combine(Path.GetTempPath(), DateTime.Now.ToString("yyyyMMdd-HHmmss"));

            string haozipExe = @"HaoZipC.exe";
            //string haozipExe = @"C:\Program Files\2345Soft\HaoZip\HaoZipC.exe";
            string args = string.Format("x \"{0}\" -o\"{1}\"", zipFileName, tmpFolder);

            ProcessStartInfo psi = new ProcessStartInfo(haozipExe, args);
            //psi.CreateNoWindow = true;
            //psi.WindowStyle = ProcessWindowStyle.Hidden;

            Process process = Process.Start(psi);

            process.WaitForExit();
            Console.WriteLine("ExitCode: " + process.ExitCode);

            string tmpImgFolder = Path.Combine(Path.GetTempPath(), DateTime.Now.ToString("yyyyMMdd-HHmmss"));

            Directory.CreateDirectory(tmpImgFolder);

            string[] files = Directory.GetFiles(tmpFolder, "*.*", SearchOption.AllDirectories);

            int counter = 0;

            foreach (var item in files)
            {
                Console.WriteLine(item);
                try
                {
                    Dicom.Imaging.DicomImage dcmImg = new Dicom.Imaging.DicomImage(item);
                    System.Drawing.Image     img    = dcmImg.RenderImage();

                    System.Drawing.Image resized = new System.Drawing.Bitmap(512, 512);
                    System.Drawing.Graphics.FromImage(resized).DrawImage(img, System.Drawing.Point.Empty);

                    resized.Save(Path.Combine(tmpImgFolder, (++counter) + ".jpg"));

                    resized.Dispose();

                    img.Dispose();
                    img = null;
                }
                catch
                {
                }
            }

            Process.Start(tmpImgFolder);

            //string tmpFolder = @"C:\Users\zlf\AppData\Local\Temp\20151027-170929";

            //DataListItem[] orderList = (DataListItem[])dataGridOrderList.DataContext;
            //DataListItem selectedOrder = orderList[dataGridOrderList.SelectedIndex];
            //string vrAviFilePath = Path.Combine(Path.Combine(SelectedUser, selectedOrder.DataID), "vr.avi");

            string img2aviArgs = string.Format("\"{0}\" \"{1}\"", tmpImgFolder, SelectedVRAviLocalPath);

            Console.WriteLine(img2aviArgs);
            Process img2AviProcess = Process.Start(@"I:\zlfLab\虚拟导航平台\navigate lx 20151026 2130 lx\LungCare.Airway.PlanNav\bin\Release\img2avi\img2avi.exe", img2aviArgs);

            img2AviProcess.WaitForExit();
            Console.WriteLine("ExitCode: " + img2AviProcess.ExitCode);

            try
            {
                Directory.Delete(tmpImgFolder, true);
            }
            catch
            {
            }
        }