[vtkusers] vtkPNGWriter: Write reduced vtkUnstructuredGrid field data to PNG-file via vtkResampleWithDataset
David E DeMarle
dave.demarle at kitware.com
Tue Jan 16 08:36:56 EST 2018
My guess is that the PNG writer expect three components, not a single
component array. vtkImageAppendComponents would be one way to make a three
tuple, but it would be more straightforward to do it in the array
construction with
SetNumberOfComponents(3) followed by
yourloop {
InsertNextTuple3(Tint,Tint,Tint);
}
David E DeMarle
Kitware, Inc.
Principal Engineer
21 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-881-4909
On Tue, Jan 16, 2018 at 3:49 AM, Stephan Lenz <stephan.lenz at tu-bs.de> wrote:
> Hello everybody,
>
> I have problems setting up a pipeline to write data to an PNG-file.
>
> I have a 2-D simulation on a large rectangular non-uniform grid (
> ~60.000.000 Cells ). For visualization of the results I would like to write
> PNG files (or other Imagefiles) in order to create an animation.
>
> I am already able to write VTK-ImageData files (.vti) and make an
> animation in Paraview. Nevertheless I would prefer to generate the
> animation directly from images, as the simulation domain should fill the
> whole animation domain. With paraview fitting the simulation domain
> seamlessly in the view is not trivial.
>
> My current pipeline is:
>
> // this adapter function couples my simulation datastructures to
> VTK
> vtkSmartPointer<vtkUnstructuredGrid> grid =
> getVtkUnstructuredGrid(dataBase);
>
> // generate the field data
> vtkSmartPointer<vtkUnsignedCharArray> data =
> vtkSmartPointer<vtkUnsignedCharArray>::New();
> data->SetNumberOfComponents( 1 );
> data->SetName( "T" );
> for( Idx cellIdx = 0; cellIdx < numberOfCells; cellIdx++ ){
> unsigned char value = getValue( cellIdx );
> data->InsertNextValue( Tint );
> }
> grid->GetCellData()->AddArray( data );
>
> // define the grid for the output
> vtkSmartPointer<vtkImageData> image =
> vtkSmartPointer<vtkImageData>::New();
> image->SetDimensions(512+1,256+1,1);
> image->SetSpacing( L/512, H/256, 0 );
>
> // resample the field data to the coarser vtkImageData
> vtkSmartPointer<vtkResampleWithDataSet> resample =
> vtkSmartPointer<vtkResampleWithDataSet>::New();
> resample->SetSourceData( grid );
> resample->SetInputData( image );
>
> // write the data to PNG-file (does not work!)
> vtkSmartPointer<vtkPNGWriter> writerPNG =
> vtkSmartPointer<vtkPNGWriter>::New();
> writerPNG->SetFileName( ( simulationName + ".png").c_str() );
> writerPNG->SetInputData( resample->GetOutput() );
> writerPNG->Write();
>
> // write the data to VTI-file (works!)
> vtkSmartPointer<vtkXMLImageDataWriter> writer =
> vtkSmartPointer<vtkXMLImageDataWriter>::New();
> writer->SetFileName( ( simulationName + "." +
> writer->GetDefaultFileExtension() ).c_str() );
> writer->SetDataMode( vtkXMLWriter::Binary );
> writer->SetInputData( resample->GetOutput() );
> writer->Write();
>
> The above code compiles and runs without errors, but I do not get any
> PNG-Files. The VTI-files are written and I can open them in Paraview, as
> usual. I tried many different things, but did not get single PNG-file out
> of this.
>
> When I, for example, change
>
> writerPNG->SetInputData( resample->GetOutput() );
>
> to
>
> writerPNG->SetInputConnection( resample->GetOutputPort() );
>
> I get a VTK Error message, that says "PNGWriter only supports unsigned
> char and unsigned short inputs". But as far as I see it the field data is
> unsigned char and this is confirmed by Paraview, when I look into the
> VTI-files (generated with both SetInputData and SetInputConnection).
>
> Do you see any obvious mistakes I make? How do I have to set up such a
> pipeline to get a PNG (or other image file) output. I would be glad for any
> help.
>
> Thank you very much,
>
> Stephan Lenz
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensou
> rce/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers
>
> Follow this link to subscribe/unsubscribe:
> https://vtk.org/mailman/listinfo/vtkusers
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://vtk.org/pipermail/vtkusers/attachments/20180116/db4786cf/attachment.html>
More information about the vtkusers
mailing list