J'ai essayé tout ce que j'ai trouvé pour sauver juste mon image sans frontières sans succès. Mon image est 124x126, donc quand l'image est sauvegardée c'est toujours avec des bordures et une nouvelle taille 300x300, Si j'utilise un autre programme pour sélectionner seulement mon image c'est 208x209. donc je ne sais pas pourquoi mon image est mise à l'échelle et pourquoi il est toujours 300x300, Si je change la taille de vtkRenderWindow à 124x126 les frontières sont toujours là et mon image est réduite. Ma question est de savoir comment je peux enregistrer mon image de 124x126 sans frontières?screenshot image de vtkRenderWindow sans frontières
mapper.SetInputConnection(polyDataReader.GetOutputPort());
vtkActor actor = new vtkActor();
actor.SetMapper(mapper);
actor.GetBounds(bounds);
System.out.println("actor: " + bounds[1] + " x " + bounds[3]); // 124x126 (everything's ok)
//Create a renderer, render window, and interactor
vtkRenderer renderer = new vtkRenderer();
vtkRenderWindow renderWindow = new vtkRenderWindow();
renderWindow.BordersOff(); // the borders are still there
renderWindow.AddRenderer(renderer);
vtkRenderWindowInteractor renderWindowInteractor = new vtkRenderWindowInteractor();
renderWindowInteractor.SetRenderWindow(renderWindow);
//Add the actor to the scene
renderer.AddActor(actor);
renderer.SetBackground(0, 0, 0);
//Render and interact
renderWindow.Render();
//screenshot code:
vtkWindowToImageFilter w2if = new vtkWindowToImageFilter();
w2if.SetInput(renderWindow);
w2if.Update();
vtkPNGWriter writer = new vtkPNGWriter();
writer.SetFileName("out.png"); //my image with borders 300x300 !!!!??
writer.SetInputData(w2if.GetOutput());
writer.Write();
ps: désolé pour mon anglais
Merci Je ne sais pas pourquoi votre code ne fonctionne pas pour moi, mais j'ai essayé celui-ci et cela fonctionne, mais je ne sais pas comment calculer la valeur ** 245 ** de mes valeurs hier je la mets car c'est celle qui me donne le bon zoom. 'camera.SetPosition ((bounds [1] -bounds [0]) * 0,5, (bounds [3] -bounds [2]) * 0,5, 245,0); camera.SetFocalPoint ((bounds [1] -bounds [0]) * 0.5, (bounds [3] -bounds [2]) * 0.5, 0.0); ' –
Que veux-tu dire par" ça ne marche pas pour moi " "? Vous voulez certainement placer la caméra au milieu des limites, il devrait donc être (bornes [0] + limites [1]) * 0.5 dans votre code, plus pas moins. Le 245 est la distance de la caméra et il est un facteur de l'angle de vue et de la taille de l'objet. Si vous dessinez sur le papier, avec un peu de trigonométrie, vous pouvez le comprendre. Mais si vous ne disposez pas d'un système de projection parallèle, votre image risque de souffrir de déformation de la projection, un peu comme si les voies ferrées convergeaient sur une peinture, même si elles sont parallèles dans la réalité. – mirni