[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