Having difficulties understanding how to control what I am rendering in 2D

Thank you. Using the ImageReslice I was able to extract the desired part of the image. That said, I am still struggling with doing so at a target resolution (for example I want to get a square segment that is 512x512 from a larger image, but render it into a 256x256 image. I am trying to do so by using the vtkImageResize method SetOutputDimensions(256,256,1) (on the output of the REslice). When I do that although VTK throws an error :

5 ERR| vtkImageResize (0x5573d537f820): ThreadedRequestData: output scalar type does not match input scalar type

I could not find anywhere in the internet this error message alongside vtk Resize. Am I doing somethign very wrong or is it some other step I am missing in the pipeline ? A sample of how I am doing it:

vtkSmartPointer reader =
vtkSmartPointer::New();
reader->SetFileName(inputFilename.c_str());
reader->Update();

// Setup offscreen rendering
vtkSmartPointer<vtkGraphicsFactory> graphics_factory =
        vtkSmartPointer<vtkGraphicsFactory>::New();
graphics_factory->SetOffScreenOnlyMode( 1);
graphics_factory->SetUseMesaClasses( 1 );

auto image_ptr = reader->GetOutput();


vtkSmartPointer<vtkImageReslice> reslice =
        vtkSmartPointer<vtkImageReslice>::New();
reslice->SetOutputExtent(0, 100, 0, 100, 0, 0);
reslice->SetOutputOrigin(150,50,0);
reslice->SetInputData(reader->GetOutput());

vtkSmartPointer<vtkImageResize> resize =
    vtkSmartPointer<vtkImageResize>::New();
resize->SetInputData(reslice->GetOutput());
resize->SetOutputDimensions(256, 256, 1);
  //resize->SetMagnificationFactors(1.0,1.0,1.0);

vtkSmartPointer<vtkImageMapper> mapper = vtkSmartPointer<vtkImageMapper>::New();
mapper->SetInputConnection(resize->GetOutputPort());


vtkSmartPointer<vtkActor2D> actor =
        vtkSmartPointer<vtkActor2D>::New();
actor->SetMapper(mapper);
actor->SetPosition(0,0);

vtkSmartPointer<vtkRenderer> renderer =
        vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
        vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetOffScreenRendering( 1 );
renderWindow->AddRenderer(renderer);


// Add the actors to the scene
renderer->AddActor(actor);

//renderer->SetActiveCamera(camera);


renderWindow->SetSize(512,512);
renderWindow->Render();

vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter =
        vtkSmartPointer<vtkWindowToImageFilter>::New();

windowToImageFilter->SetInput(renderWindow);
windowToImageFilter->Update();

vtkSmartPointer<vtkPNGWriter> writer =
        vtkSmartPointer<vtkPNGWriter>::New();
writer->SetFileName("screenshot.png");
writer->SetInputConnection(windowToImageFilter->GetOutputPort());
writer->Write();