# How to import an PNG file with vtkImageImport?

**URL:** https://discourse.vtk.org/t/how-to-import-an-png-file-with-vtkimageimport/4667
**Category:** Development
**Created:** [November 16, 2020, 8:03am UTC](https://discourse.vtk.org/t/how-to-import-an-png-file-with-vtkimageimport/4667 "2020-11-16T08:03:39Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![learn\_forever](https://discourse.vtk.org/user_avatar/discourse.vtk.org/learn_forever/32/754_2.png) [@learn\_forever](https://discourse.vtk.org/u/learn_forever)
#### Post date: [November 16, 2020, 8:03am UTC](https://discourse.vtk.org/t/how-to-import-an-png-file-with-vtkimageimport/4667/1 "2020-11-16T08:03:39Z")

</div>

Hi,  
I tried with following code snippet but got a wrong image rendered.

```
        MemoryStream ms1 = new MemoryStream();
        Image image = Image.FromFile(@"D:\visual studio 2015\Projects\VTKImageBufferRender\VTKImageBufferRender\administrator.png");
        image.Save(ms1, System.Drawing.Imaging.ImageFormat.Png);

        GCHandle hObject = GCHandle.Alloc(ms1.GetBuffer(), GCHandleType.Pinned);
        IntPtr buffer = hObject.AddrOfPinnedObject();

        if (hObject.IsAllocated)
        {
            hObject.Free();
        }

        vtkImageImport imageImport = vtkImageImport.New();
        imageImport.SetDataSpacing(1, 1, 1);
        imageImport.SetDataOrigin(0, 0, 0);
         imageImport.SetWholeExtent(0, image.Width - 1, 0, image.Height - 1, 0, 0);
        imageImport.SetDataExtentToWholeExtent();
        imageImport.SetDataScalarTypeToUnsignedChar();
        imageImport.SetNumberOfScalarComponents(4);
        imageImport.SetImportVoidPointer(buffer);
        imageImport.Update();

        // Create an actor
        vtkImageActor actor = vtkImageActor.New();
        actor.SetInputData(imageImport.GetOutput());

        // Setup renderer
        vtkRenderer renderer = vtkRenderer.New();
        renderer.AddActor(actor);
        renderer.ResetCamera();

        // Setup render window
        vtkRenderWindow renderWindow = vtkRenderWindow.New();
        renderWindow.AddRenderer(renderer);

        // Setup render window interactor
        vtkRenderWindowInteractor renderWindowInteractor = vtkRenderWindowInteractor.New();
        vtkInteractorStyleImage style = vtkInteractorStyleImage.New();

        renderWindowInteractor.SetInteractorStyle(style);

        // Render and start interaction
        renderWindowInteractor.SetRenderWindow(renderWindow);
        renderWindow.Render();
        renderWindowInteractor.Initialize();

        renderWindowInteractor.Start();

```

Original PNG file:  
 ![image](https://discourse.vtk.org/uploads/default/original/2X/f/feff78b5e1974b0dc1d6d97333332439019f24e4.png)

Rendered Image inside VTK window  
 ![image](https://discourse.vtk.org/uploads/default/original/2X/5/5da21197a071ef07dffa246246f177a18229caa7.jpeg)

---

<div class="post-metadata">

### Author: ![dave3d](https://discourse.vtk.org/user_avatar/discourse.vtk.org/dave3d/32/1157_2.png) [@dave3d](https://discourse.vtk.org/u/dave3d)
#### Post date: [November 16, 2020, 2:22pm UTC](https://discourse.vtk.org/t/how-to-import-an-png-file-with-vtkimageimport/4667/2 "2020-11-16T14:22:32Z")

</div>

Wouldn’t it be easier to just use the vtkPNGReader class?  
[https://vtk.org/doc/release/7.1/html/classvtkPNGReader.html](https://vtk.org/doc/release/7.1/html/classvtkPNGReader.html)

---

<div class="post-metadata">

### Author: ![learn\_forever](https://discourse.vtk.org/user_avatar/discourse.vtk.org/learn_forever/32/754_2.png) [@learn\_forever](https://discourse.vtk.org/u/learn_forever)
#### Post date: [November 17, 2020, 5:58am UTC](https://discourse.vtk.org/t/how-to-import-an-png-file-with-vtkimageimport/4667/3 "2020-11-17T05:58:22Z")

</div>

Yes,vtkPNGReader should be working. But I just want to know how to do this with vtkImageImport. I think I’ve found the root cause. Thanks anyway.
