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)); }
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)); }
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; } }