[vtkusers] vtkWindowToImageFilter - black image

Miroslav Drahos mdrahos at thinksurgical.com
Tue Jun 9 13:43:33 EDT 2015


Frederik,
you should call vtkRenderWindow::Render() before updating the pipeline.
This is what has worked for me reliably:

  VTK_CREATE(vtkWindowToImageFilter, w2i);
  w2i->SetInput(rw);
  w2i->ReadFrontBufferOff();
  rw->Render();
  w2i->Modified();  // See doc http://www.vtk.org/doc/nightly/html/classvtkWindowToImageFilter.html#details

  VTK_CREATE(vtkPNGWriter, writer);
  writer->SetFileName(fname.c_str());
  writer->SetInputConnection(w2i->GetOutputPort());
  writer->Write();

where VTK_CREATE is a widely used macro:

#define VTK_CREATE(type, name) vtkSmartPointer<type> name = vtkSmartPointer<type>::New();

HTH,
Miro
 
________________________________________
From: vtkusers [vtkusers-bounces at vtk.org] On Behalf Of Fredrik [frejon at gmail.com]
Sent: Tuesday, June 09, 2015 8:55 AM
To: Scott Wittenburg
Cc: vtkusers at public.kitware.com
Subject: Re: [vtkusers] vtkWindowToImageFilter - black image

Hi Scott, thanks for the reply. Unfortunately it didn't help. I think I remember some other thread with the "ShouldRerender" flag, but I think that mentioned it should be windowToImageFilter.ShouldRerenderOff();
, not on. I tried both anyway, but no change

All the best,
Fredrik

2015-06-09 17:33 GMT+02:00 Scott Wittenburg <scott.wittenburg at kitware.com<mailto:scott.wittenburg at kitware.com>>:
Hi Frederik,

   I believe I have encountered this before.  What solved it for me was turning on the "ShouldRerender" flag in addition to what you have set.  Something like:

windowToImageFilter.ShouldRerenderOn();

could possibly help.

Cheers,
Scott



On Tue, Jun 9, 2015 at 9:02 AM, Fredrik <frejon at gmail.com<mailto:frejon at gmail.com>> wrote:
Hello. There are several threads on this topic, and the few I see, the proposed solutions are not enough or the thread is left unresolved. see this:

http://public.kitware.com/pipermail/vtkusers/2014-October/085358.html
http://public.kitware.com/pipermail/vtkusers/2014-October/085294.html

I still am unable to generate anything else than a black image.
I'm on the latest VTK, under Mac OS X 10.10.  I also tried offscreen rendering, but no luck.

Hours of googling and testing solutions have proven unsuccessful, I'd really appreciate if anyone could help me.

here's a snippet of my code if you think it'll help

        tempFile = "xyz.bmp";
        // write to temporary bmp file
        vtkBMPWriter writer = new vtkBMPWriter();
        vtkWindowToImageFilter windowToImageFilter = new vtkWindowToImageFilter();
        windowToImageFilter.ReadFrontBufferOff();
        windowToImageFilter.SetMagnification(1);
        windowToImageFilter.SetInput(renderWindow);
        windowToImageFilter.SetInputBufferTypeToRGBA();
        windowToImageFilter.ReadFrontBufferOff();

        windowToImageFilter.Update();

        windowToImageFilter.ReadFrontBufferOff();
        writer.SetInputConnection(windowToImageFilter.GetOutputPort());
        writer.SetFileName(tempFile);
        writer.Write();



Kind Regards, Fredrik








_______________________________________________
Powered by www.kitware.com<http://www.kitware.com>

Visit other Kitware open-source projects at http://www.kitware.com/opensource/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:
http://public.kitware.com/mailman/listinfo/vtkusers





More information about the vtkusers mailing list