#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkRenderingFreeType)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
#include <vtkSmartPointer.h>
#include <vtkPNGReader.h>
#include <vtkImageData.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkImageViewer2.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkJPEGWriter.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkVolumeMapper.h>
#include <vtkImageMapper.h>
#include <vtkActor2D.h>
#include <vtkCamera.h>
#include <vtkInteractorStyleImage.h>
#include <vtkImageActor.h>
//测试文件:data/VTK-logo.bmp
#pragma comment(lib, "vtkRenderingCore-7.1.lib")
#pragma comment(lib, "vtkInteractionStyle-7.1.lib")
#pragma comment(lib, "vtkCommonCore-7.1.lib")
#pragma comment(lib, "vtkCommonExecutionModel-7.1.lib")
#pragma comment(lib, "vtkRenderingFreeType-7.1.lib")
#pragma comment(lib, "vtkRenderingOpenGL2-7.1.lib")
#pragma comment(lib, "vtkRenderingVolume-7.1.lib")
#pragma comment(lib, "vtkRenderingVolumeOpenGL2-7.1.lib")
#pragma comment(lib, "vtkIOImage-7.1.lib")
#pragma comment(lib, "vtkInteractionImage-7.1.lib")
#pragma comment(lib, "vtkImagingCore-7.1.lib")
int main(int argc, char* argv[])
{
vtkSmartPointer<vtkPNGReader> reader = vtkSmartPointer<vtkPNGReader>::New();
reader->SetFileName("E:\\vtk\\VTKData\\Data\\vtk.png");
/* 显示一张图像的第一种方法
vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
imageViewer->SetupInteractor(renderWindowInteractor);
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
imageViewer->Render();
renderWindowInteractor
*/
/*显示一张图像的第二种方法
vtkSmartPointer<vtkImageMapper> mapper = vtkSmartPointer<vtkImageMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());
mapper->SetColorLevel(128); mapper->SetColorWindow(256);
vtkSmartPointer<vtkActor2D> imgActor = vtkSmartPointer<vtkActor2D>::New();
imgActor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor2D(imgActor);
renderer->SetBackground(0.1, 0.1, 0.1);
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
*/
/*此方法行不通
vtkSmartPointer<vtkImageActor> actor = vtkSmartPointer<vtkImageActor>::New();
actor->SetInputData(reader->GetOutput());
vtkSmartPointer<vtkRenderer> renderer = vtkRenderer::New();
renderer->AddActor(actor);
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
vtkInteractorStyleImage *interactor = vtkInteractorStyleImage::New();
iren->SetInteractorStyle(interactor);
renderer->SetBackground(0.1, 0.2, 0.4);
renWin->Render();
iren->Initialize();
iren->Start();
*/
//保存成png
vtkSmartPointer<vtkJPEGWriter> writer = vtkSmartPointer<vtkJPEGWriter>::New();
writer->SetFileName("E:\\vtk\\VTKData\\Data\\vtk.jpg");
writer->SetInputConnection(reader->GetOutputPort());
writer->Write();
return 0;
}