private void WriteBMP() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); string filePath = System.IO.Path.Combine(root, @"Data\test_bmp.bmp"); int[] extent = new int[] { 1, 10, 1, 10, 1, 10 }; vtkImageCanvasSource2D imageSource = vtkImageCanvasSource2D.New(); imageSource.SetScalarTypeToUnsignedChar(); imageSource.SetExtent(0, 9, 0, 9, 0, 0); imageSource.SetNumberOfScalarComponents(3); imageSource.SetDrawColor(0, 0, 0, 0); imageSource.FillBox(0, 9, 0, 9); imageSource.SetDrawColor(255, 0, 0, 0); imageSource.FillBox(5, 7, 5, 7); imageSource.Update(); vtkBMPWriter bmpWriter = vtkBMPWriter.New(); bmpWriter.SetFileName(filePath); bmpWriter.SetInputConnection(imageSource.GetOutputPort()); bmpWriter.Write(); // Read and display file for verification that it was written correctly vtkBMPReader reader = vtkBMPReader.New(); if (reader.CanReadFile(filePath) == 0) { MessageBox.Show("Cannot read file \"" + filePath + "\"", "Error", MessageBoxButtons.OK); return; } reader.SetFileName(filePath); reader.Update(); // Visualize vtkImageViewer2 imageViewer = vtkImageViewer2.New(); imageViewer.SetInputConnection(reader.GetOutputPort()); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.2, 0.3, 0.4); imageViewer.SetRenderer(renderer); renderer.ResetCamera(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestImageWriters(String [] argv) { //Prefix Content is: "" // Image pipeline[] image1 = new vtkTIFFReader(); image1.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/beach.tif"); // "beach.tif" image contains ORIENTATION tag which is [] // ORIENTATION_TOPLEFT (row 0 top, col 0 lhs) type. The TIFF [] // reader parses this tag and sets the internal TIFF image [] // orientation accordingly. To overwrite this orientation with a vtk[] // convention of ORIENTATION_BOTLEFT (row 0 bottom, col 0 lhs ), invoke[] // SetOrientationType method with parameter value of 4.[] image1.SetOrientationType((uint)4); image1.Update(); sp = new vtkStructuredPoints(); sp.SetDimensions(image1.GetOutput().GetDimensions()[0], image1.GetOutput().GetDimensions()[1], image1.GetOutput().GetDimensions()[2]); sp.SetExtent( image1.GetOutput().GetExtent()[0], image1.GetOutput().GetExtent()[1], image1.GetOutput().GetExtent()[2], image1.GetOutput().GetExtent()[3], image1.GetOutput().GetExtent()[4], image1.GetOutput().GetExtent()[5]); //sp.SetScalarType((int)image1.GetOutput().GetScalarType()); //sp.SetNumberOfScalarComponents((int)image1.GetOutput().GetNumberOfScalarComponents()); vtkDataObject.SetPointDataActiveScalarInfo(sp.GetInformation(), (int)image1.GetOutput().GetScalarType(), (int)image1.GetOutput().GetNumberOfScalarComponents()); sp.GetPointData().SetScalars((vtkDataArray)image1.GetOutput().GetPointData().GetScalars()); luminance = new vtkImageLuminance(); luminance.SetInputData((vtkDataObject)sp); //[] // write to the temp directory if possible, otherwise use .[] //[] dir = "."; dir = TclToCsScriptTestDriver.GetTempDirectory(); // make sure it is writeable first[] try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryCatchError = "NOERROR"; } catch (Exception) { tryCatchError = "ERROR"; } if (tryCatchError.Equals("NOERROR")) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); tiff1 = new vtkTIFFWriter(); tiff1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); tiff1.SetFileName((string)"" + (dir.ToString()) + "/tiff1.tif"); tiff2 = new vtkTIFFWriter(); tiff2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); tiff2.SetFileName((string)"" + (dir.ToString()) + "/tiff2.tif"); bmp1 = new vtkBMPWriter(); bmp1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); bmp1.SetFileName((string)"" + (dir.ToString()) + "/bmp1.bmp"); bmp2 = new vtkBMPWriter(); bmp2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); bmp2.SetFileName((string)"" + (dir.ToString()) + "/bmp2.bmp"); pnm1 = new vtkPNMWriter(); pnm1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); pnm1.SetFileName((string)"" + (dir.ToString()) + "/pnm1.pnm"); pnm2 = new vtkPNMWriter(); pnm2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); pnm2.SetFileName((string)"" + (dir.ToString()) + "/pnm2.pnm"); psw1 = new vtkPostScriptWriter(); psw1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); psw1.SetFileName((string)"" + (dir.ToString()) + "/psw1.ps"); psw2 = new vtkPostScriptWriter(); psw2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); psw2.SetFileName((string)"" + (dir.ToString()) + "/psw2.ps"); pngw1 = new vtkPNGWriter(); pngw1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); pngw1.SetFileName((string)"" + (dir.ToString()) + "/pngw1.png"); pngw2 = new vtkPNGWriter(); pngw2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); pngw2.SetFileName((string)"" + (dir.ToString()) + "/pngw2.png"); jpgw1 = new vtkJPEGWriter(); jpgw1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); jpgw1.SetFileName((string)"" + (dir.ToString()) + "/jpgw1.jpg"); jpgw2 = new vtkJPEGWriter(); jpgw2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); jpgw2.SetFileName((string)"" + (dir.ToString()) + "/jpgw2.jpg"); tiff1.Write(); tiff2.Write(); bmp1.Write(); bmp2.Write(); pnm1.Write(); pnm2.Write(); psw1.Write(); psw2.Write(); pngw1.Write(); pngw2.Write(); jpgw1.Write(); jpgw2.Write(); File.Delete("" + (dir.ToString()) + "/tiff1.tif"); File.Delete("" + (dir.ToString()) + "/tiff2.tif"); File.Delete("" + (dir.ToString()) + "/bmp1.bmp"); File.Delete("" + (dir.ToString()) + "/bmp2.bmp"); File.Delete("" + (dir.ToString()) + "/pnm1.pnm"); File.Delete("" + (dir.ToString()) + "/pnm2.pnm"); File.Delete("" + (dir.ToString()) + "/psw1.ps"); File.Delete("" + (dir.ToString()) + "/psw2.ps"); File.Delete("" + (dir.ToString()) + "/pngw1.png"); File.Delete("" + (dir.ToString()) + "/pngw2.png"); File.Delete("" + (dir.ToString()) + "/jpgw1.jpg"); File.Delete("" + (dir.ToString()) + "/jpgw2.jpg"); } viewer = new vtkImageViewer(); viewer.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); viewer.SetColorWindow((double)255); viewer.SetColorLevel((double)127.5); viewer.Render(); //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestImageWriters(String [] argv) { //Prefix Content is: "" // Image pipeline[] image1 = new vtkTIFFReader(); image1.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/beach.tif"); // "beach.tif" image contains ORIENTATION tag which is [] // ORIENTATION_TOPLEFT (row 0 top, col 0 lhs) type. The TIFF [] // reader parses this tag and sets the internal TIFF image [] // orientation accordingly. To overwrite this orientation with a vtk[] // convention of ORIENTATION_BOTLEFT (row 0 bottom, col 0 lhs ), invoke[] // SetOrientationType method with parameter value of 4.[] image1.SetOrientationType((uint)4); image1.Update(); sp = new vtkStructuredPoints(); sp.SetDimensions(image1.GetOutput().GetDimensions()[0],image1.GetOutput().GetDimensions()[1],image1.GetOutput().GetDimensions()[2]); sp.SetExtent( image1.GetOutput().GetExtent()[0], image1.GetOutput().GetExtent()[1], image1.GetOutput().GetExtent()[2], image1.GetOutput().GetExtent()[3], image1.GetOutput().GetExtent()[4], image1.GetOutput().GetExtent()[5]); //sp.SetScalarType((int)image1.GetOutput().GetScalarType()); //sp.SetNumberOfScalarComponents((int)image1.GetOutput().GetNumberOfScalarComponents()); vtkDataObject.SetPointDataActiveScalarInfo(sp.GetInformation(), (int)image1.GetOutput().GetScalarType(), (int)image1.GetOutput().GetNumberOfScalarComponents()); sp.GetPointData().SetScalars((vtkDataArray)image1.GetOutput().GetPointData().GetScalars()); luminance = new vtkImageLuminance(); luminance.SetInputData((vtkDataObject)sp); //[] // write to the temp directory if possible, otherwise use .[] //[] dir = "."; dir = TclToCsScriptTestDriver.GetTempDirectory(); // make sure it is writeable first[] try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryCatchError = "NOERROR"; } catch(Exception) {tryCatchError = "ERROR";} if(tryCatchError.Equals("NOERROR")) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); tiff1 = new vtkTIFFWriter(); tiff1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); tiff1.SetFileName((string)"" + (dir.ToString()) + "/tiff1.tif"); tiff2 = new vtkTIFFWriter(); tiff2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); tiff2.SetFileName((string)"" + (dir.ToString()) + "/tiff2.tif"); bmp1 = new vtkBMPWriter(); bmp1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); bmp1.SetFileName((string)"" + (dir.ToString()) + "/bmp1.bmp"); bmp2 = new vtkBMPWriter(); bmp2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); bmp2.SetFileName((string)"" + (dir.ToString()) + "/bmp2.bmp"); pnm1 = new vtkPNMWriter(); pnm1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); pnm1.SetFileName((string)"" + (dir.ToString()) + "/pnm1.pnm"); pnm2 = new vtkPNMWriter(); pnm2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); pnm2.SetFileName((string)"" + (dir.ToString()) + "/pnm2.pnm"); psw1 = new vtkPostScriptWriter(); psw1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); psw1.SetFileName((string)"" + (dir.ToString()) + "/psw1.ps"); psw2 = new vtkPostScriptWriter(); psw2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); psw2.SetFileName((string)"" + (dir.ToString()) + "/psw2.ps"); pngw1 = new vtkPNGWriter(); pngw1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); pngw1.SetFileName((string)"" + (dir.ToString()) + "/pngw1.png"); pngw2 = new vtkPNGWriter(); pngw2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); pngw2.SetFileName((string)"" + (dir.ToString()) + "/pngw2.png"); jpgw1 = new vtkJPEGWriter(); jpgw1.SetInputConnection((vtkAlgorithmOutput)image1.GetOutputPort()); jpgw1.SetFileName((string)"" + (dir.ToString()) + "/jpgw1.jpg"); jpgw2 = new vtkJPEGWriter(); jpgw2.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); jpgw2.SetFileName((string)"" + (dir.ToString()) + "/jpgw2.jpg"); tiff1.Write(); tiff2.Write(); bmp1.Write(); bmp2.Write(); pnm1.Write(); pnm2.Write(); psw1.Write(); psw2.Write(); pngw1.Write(); pngw2.Write(); jpgw1.Write(); jpgw2.Write(); File.Delete("" + (dir.ToString()) + "/tiff1.tif"); File.Delete("" + (dir.ToString()) + "/tiff2.tif"); File.Delete("" + (dir.ToString()) + "/bmp1.bmp"); File.Delete("" + (dir.ToString()) + "/bmp2.bmp"); File.Delete("" + (dir.ToString()) + "/pnm1.pnm"); File.Delete("" + (dir.ToString()) + "/pnm2.pnm"); File.Delete("" + (dir.ToString()) + "/psw1.ps"); File.Delete("" + (dir.ToString()) + "/psw2.ps"); File.Delete("" + (dir.ToString()) + "/pngw1.png"); File.Delete("" + (dir.ToString()) + "/pngw2.png"); File.Delete("" + (dir.ToString()) + "/jpgw1.jpg"); File.Delete("" + (dir.ToString()) + "/jpgw2.jpg"); } viewer = new vtkImageViewer(); viewer.SetInputConnection((vtkAlgorithmOutput)luminance.GetOutputPort()); viewer.SetColorWindow((double)255); viewer.SetColorLevel((double)127.5); viewer.Render(); //deleteAllVTKObjects(); }