[vtkusers] Writing a JPEG from vtkActor

Amy Squillacote amy.squillacote at kitware.com
Tue Dec 20 11:00:43 EST 2005


At 10:35 AM 12/20/2005, Dominik Szczerba wrote:
>Hello,
>Even if I change the date to point data I am not succesful with either
>Cast or ShiftScale. Please see below:
>
>//read in
>   vtkStructuredPointsReader* reader = vtkStructuredPointsReader::New();
>   reader->SetFileName(argv[1]);
>   vtkStructuredPoints* grid = reader->GetOutput();
>   grid->Update();
>
>//print some info
>   unsigned long MEM = grid->GetActualMemorySize();//in kB
>   cout << "mem=" << MEM << endl;
>   int NP = grid->GetNumberOfPoints();
>   cout << "NP=" << NP << endl;
>   int NCELLS = grid->GetNumberOfCells();
>   cout << "NCELLS=" << NCELLS << endl;
>   double range[2];
>   grid->GetPointData()->GetScalars("vx")->GetRange(range);
>   cerr << "range " << range[0] << " " << range[1] << endl;
>
>   grid->GetPointData()->SetActiveScalars("vx");
>
>   vtkImageShiftScale *iss = vtkImageShiftScale::New();
>   iss->SetInput(grid);
>   iss->SetOutputScalarTypeToUnsignedChar();
>   iss->SetShift(-range[0]);
>   iss->SetScale((range[1] - range[0]) / 256.0);

I just realized I did the division backwards in this step.  You 
should be dividing 256 by the difference in the minimum and maximum 
range values.

iss->SetScale(256.0 / (range[1] - range[0]));


>   vtkPNGWriter* writer = vtkPNGWriter::New();
>   writer->SetInput(iss->GetOutput());
>   writer->SetFileName(argv[2]);
>   writer->Write();
>
>Always the first scalar is taken, regardles of explicit selection with
>setActiveScalarrs. The info seems displayed properly (of the first
>scalar) whih is in my case -9.11732e-06 1.53533e-05, output is black
>image (empty histogram).
>I will be grateful if you shed some light on this mystery.
>Dominik
>
>Amy Squillacote wrote:
> > Try using vtkImageShiftScale instead.  Do something like the following.
> >
> > double range[2];
> > grid->GetCellData()->GetScalars("abc")->GetScalarRange(range);
> >
> > vtkImageShiftScale *iss = vtkImageShiftScale::New();
> > iss->SetInput(grid);
> > iss->SetOutputScalarTypeToUnsignedChar();
> > iss->SetShift(-range[0]);
> > iss->SetScale((range[1] - range[0]) / 256.0);
> >
> > Are you sure that the data in your grid (a vtkImageData, I assume) is in
> > cell data? It's usually in point data.
> >
> > - Amy
> >
> > At 09:44 AM 12/20/2005, Dominik Szczerba wrote:
> >
> >> Thanks a lot, yes, I am trying the vtkImageCast, compiles fine, but get
> >> a black image at the end. Shouldnt I set ranges somewhere?
> >> I can do
> >>
> >> grid->GetCellData()->GetScalars("abc")->GetRange())
> >>
> >> but where do I plug the output?
> >>
> >> Dominik
> >>
> >> Amy Squillacote wrote:
> >> > Try using either vtkImageCast or vtkImageShiftScale to change your
> >> image
> >> > data to contain either unsigned char or unsigned short data.
> >> >
> >> > - Amy
> >> >
> >> > At 08:58 AM 12/20/2005, Dominik Szczerba wrote:
> >> >
> >> >> What is the error? I try to do the same with vtkPNGWriter ending up
> >> with:
> >> >>
> >> >> vtkPNGWriter (0x8058948): PNGWriter only supports unsigned char and
> >> >> unsigned short inputs
> >> >>
> >> >> Meanwhile I try to figure out how to do the appropriate convertion in
> >> >> vtk.
> >> >> --dsz
> >> >>
> >> >> Marlos Fabris wrote:
> >> >> > Hi,
> >> >> >
> >> >> > I'm trying to write a jpeg file (using vtkJPEGWriter) from a
> >> vtkActor
> >> >> > but I can't accomplish this. I have a vtk file with structured
> >> points
> >> >> > data and I wish to transform to vtkPolyData and color it with my
> >> >> > vtkLookupTable.
> >> >> >
> >> >> > Is there a way to convert only my vtkActor to a vtkImageData,
> >> without
> >> >> > the frameborders of vtkWindowToImageFilter?
> >> >> >
> >> >> > Or is there a way to trim my image?
> >> >> >
> >> >> > Thank you in advance,
> >> >> >
> >> >> > Marlos Fabris
> >> >> > _______________________________________________
> >> >> > This is the private VTK discussion list.
> >> >> > Please keep messages on-topic. Check the FAQ at:
> >> >> http://www.vtk.org/Wiki/VTK_FAQ
> >> >> > Follow this link to subscribe/unsubscribe:
> >> >> > http://www.vtk.org/mailman/listinfo/vtkusers
> >> >>
> >> >> --
> >> >> Dominik Szczerba, Dr.
> >> >> ETZ C110 CO-ME/BIWI CH-8092 Zurich
> >> >> http://www.vision.ee.ethz.ch/~domi
> >> >> _______________________________________________
> >> >> This is the private VTK discussion list.
> >> >> Please keep messages on-topic. Check the FAQ at:
> >> >> http://www.vtk.org/Wiki/VTK_FAQ
> >> >> Follow this link to subscribe/unsubscribe:
> >> >> http://www.vtk.org/mailman/listinfo/vtkusers
> >>
> >> --
> >> Dominik Szczerba, Dr.
> >> ETZ C110 CO-ME/BIWI CH-8092 Zurich
> >> http://www.vision.ee.ethz.ch/~domi
> >> _______________________________________________
> >> This is the private VTK discussion list.
> >> Please keep messages on-topic. Check the FAQ at:
> >> http://www.vtk.org/Wiki/VTK_FAQ
> >> Follow this link to subscribe/unsubscribe:
> >> http://www.vtk.org/mailman/listinfo/vtkusers
>
>--
>Dominik Szczerba, Dr.
>ETZ C110 CO-ME/BIWI CH-8092 Zurich
>http://www.vision.ee.ethz.ch/~domi
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at: 
>http://www.vtk.org/Wiki/VTK_FAQ
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers




More information about the vtkusers mailing list