Beispiel #1
0
        public void Standard_Format_Portrait_Test()
        {
            var filmBox = new PrintScu.FilmBox(300, 600)
            {
                FilmOrientation    = FilmOrientation.Portrait,
                FilmSizeId         = FilmSize.Dimension_8in_x_10in,
                ImageDisplayFormat = ImageDisplayFormat.Standard_2x4
            };

            var imageBox    = new PrintScu.ImageBox(filmBox, null);
            var filmBoxSize = filmBox.SizeInPixels;

            // Layout is 2x4, meaning 2 columns, 4 rows.
            // ImageBoxes are ordered top->bottom, left->right
            imageBox.ImageBoxPosition = 1;
            var imageBoxSize = imageBox.SizeInPixels;

            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 4);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(8 * LengthInMillimeter.Inch / 2, _floatingPointDigits));

            imageBox.ImageBoxPosition = 8;
            imageBoxSize = imageBox.SizeInPixels;
            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 4);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(8 * LengthInMillimeter.Inch / 2, _floatingPointDigits));
        }
Beispiel #2
0
        public void Column_Format_Landscape_Test()
        {
            var filmBox = new PrintScu.FilmBox(300, 600)
            {
                FilmOrientation    = FilmOrientation.Landscape,
                FilmSizeId         = FilmSize.Dimension_8in_x_10in,
                ImageDisplayFormat = ImageDisplayFormat.COL_1_2
            };

            var imageBox    = new PrintScu.ImageBox(filmBox, null);
            var filmBoxSize = filmBox.SizeInPixels;

            // Layout is Column 1,2, meaning 1 row in the left column and 2 rows in the right column
            imageBox.ImageBoxPosition = 1;
            var imageBoxSize = imageBox.SizeInPixels;

            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(10 * LengthInMillimeter.Inch / 2, _floatingPointDigits));

            imageBox.ImageBoxPosition = 2;
            imageBoxSize = imageBox.SizeInPixels;
            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 2);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(10 * LengthInMillimeter.Inch / 2, _floatingPointDigits));

            imageBox.ImageBoxPosition = 3;
            imageBoxSize = imageBox.SizeInPixels;
            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 2);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(10 * LengthInMillimeter.Inch / 2, _floatingPointDigits));
        }
Beispiel #3
0
        public void Row_Format_Portrait_Test()
        {
            var filmBox = new PrintScu.FilmBox(300, 600)
            {
                FilmOrientation    = FilmOrientation.Portrait,
                FilmSizeId         = FilmSize.Dimension_8in_x_10in,
                ImageDisplayFormat = ImageDisplayFormat.Row_1_2
            };

            var imageBox    = new PrintScu.ImageBox(filmBox, null);
            var filmBoxSize = filmBox.SizeInPixels;

            // Layout is Row 1,2, meaning 1 column in top row and 2 columns in bottom row
            imageBox.ImageBoxPosition = 1;
            var imageBoxSize = imageBox.SizeInPixels;

            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 2);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(8 * LengthInMillimeter.Inch, _floatingPointDigits));

            imageBox.ImageBoxPosition = 2;
            imageBoxSize = imageBox.SizeInPixels;
            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 2);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(8 * LengthInMillimeter.Inch / 2, _floatingPointDigits));

            imageBox.ImageBoxPosition = 3;
            imageBoxSize = imageBox.SizeInPixels;
            Assert.AreEqual(imageBoxSize.Width, filmBoxSize.Width / 2);
            Assert.AreEqual(imageBoxSize.Height, filmBoxSize.Height / 2);
            Assert.AreEqual(Math.Round(imageBox.PhysicalWidth, _floatingPointDigits), Math.Round(8 * LengthInMillimeter.Inch / 2, _floatingPointDigits));
        }
        public void GetPixelData(PrintScu.ImageBox imageBox, ColorMode colorMode, out ushort rows, out ushort columns, out byte[] pixelData)
        {
            try
            {
                ExportImageItem exportImageItem = new ExportImageItem
                {
                    printItem = this
                };

                Frame    frame = ((IImageSopProvider)this.PresentationImage).Frame;
                object[] args  = new object[3];
                args[0] = imageBox.ImageBoxPosition;
                args[1] = colorMode;
                args[2] = frame.SopInstanceUid;

                Platform.Log(LogLevel.Debug, "PresentationImage", args);

                if (this.ExportOption == ExportOption.TrueSize)
                {
                    imageBox.RequestedDecimateCropBehavior = DecimateCropBehavior.Crop;
                }
                else
                {
                    imageBox.RequestedDecimateCropBehavior = DecimateCropBehavior.Decimate;
                }

                ExportImageParams exportImageParams = new ExportImageParams();
                exportImageParams.Dpi              = imageBox.FilmBox.FilmDPI;
                exportImageParams.SizeMode         = SizeMode.ScaleToFit;
                exportImageParams.DisplayRectangle = this.DisplayRectangle;
                exportImageParams.OutputSize       = imageBox.SizeInPixels;
                exportImageParams.ExportOption     = ExportOption.Wysiwyg;
                exportImageItem.exportImageParams  = exportImageParams;

                Platform.Log(LogLevel.Debug, "OutputSize", exportImageItem.exportImageParams.OutputSize);

                exportImageItem.bitmap = null;
                MemoryManager.Execute(exportImageItem.ExportImage);
                rows    = (ushort)exportImageItem.bitmap.Size.Height;
                columns = (ushort)exportImageItem.bitmap.Size.Width;

                if (this.ExportOption == ExportOption.TrueSize)
                {
                    imageBox.RequestedImageSize = (((float)columns) * 25.4f) / ((float)imageBox.FilmBox.FilmDPI);

                    Platform.Log(LogLevel.Debug, "RequestedImageSize", imageBox.RequestedImageSize);
                }
                pixelData = BitMapUtility.GetBitmap(exportImageItem.bitmap, colorMode);
            }
            catch (Exception exception)
            {
                Platform.Log(LogLevel.Error, exception);
                throw;
            }
            finally
            {
                Platform.Log(LogLevel.Debug, "finally", new object[] { "完成" });
            }
        }
 public void GetPixelData(PrintScu.ImageBox imageBox, ColorMode colorMode, out ushort rows, out ushort columns, out byte[] pixelData)
 {
     try
     {
         LocalSopDataSource dataSource = _file.DataSource as LocalSopDataSource;
         dataSource.File.Load(DicomReadOptions.Default | DicomReadOptions.StorePixelDataReferences);
         rows    = dataSource.File.DataSet[DicomTags.Rows].GetUInt16(0, 0);
         columns = dataSource.File.DataSet[DicomTags.Columns].GetUInt16(0, 0);
         DicomUncompressedPixelData uncompressedPixelData = new DicomUncompressedPixelData(dataSource.File);
         pixelData = uncompressedPixelData.GetFrame(0);
     }
     catch (Exception e)
     {
         Platform.Log(LogLevel.Error, string.Format("获得像素数据失败:{0}", e.Message));
         throw e;
     }
 }