Skip to content
Snippets Groups Projects
Commit 80fcd191 authored by Andrew Maclean's avatar Andrew Maclean
Browse files

Replacing WritePNG with WriteImage.

Former-commit-id: 83a4ad4c
parent 82773810
No related branches found
No related tags found
No related merge requests found
......@@ -237,7 +237,7 @@ AddThumbnails(RepoDir, RepoURL, RepoDir + "/VTKBookFigures.md", DocDir + "/VTKBo
snippets = ['ReadPolyData', 'SaveSceneToFieldData', 'SaveSceneToFile', 'RestoreSceneFromFieldData', 'RestoreSceneFromFile', 'ChooseContrastingColor']
for snippet in snippets:
CopyFile(RepoDir + '/Cxx/Snippets/' + snippet + '.md', DocDir + '/Cxx/Snippets/' + snippet + '.md')
snippets = ['GetProgramParameters', 'ReadPolyData', 'WritePNG']
snippets = ['GetProgramParameters', 'ReadPolyData', 'WriteImage']
for snippet in snippets:
CopyFile(RepoDir + '/Python/Snippets/' + snippet + '.md', DocDir + '/Python/Snippets/' + snippet + '.md')
......
......@@ -9,7 +9,7 @@ Get the program parameters.
#### [ReadPolyData](/Python/Snippets/ReadPolyData.md)
Uses the appropriate vtkPolyData reader to read any vtkPolyData file.
#### [WritePNG](/Python/Snippets/WritePNG)
Takes a screen shot from the render window and writes it to a png file.
#### [WriteImage](/Python/Snippets/WriteImage.md)
Take a screen shot from the render window and write it to a file. The file extension selects the writer to use.
### Description
Given a filename, render window and optionally a rgba value, take a screenshot of the render window and write it to a file. The extension of the filename determines what writer to use.
To use the snippet, click the *Copy to clipboard* at the upper left of the code blocks.
### Implementation
```python
def WriteImage(fileName, renWin, rgba=True):
"""
Write the render window view to an image file.
Image types supported are:
BMP, JPEG, PNM, PNG, PostScript, TIFF.
The default parameters are used for all writers, change as needed.
:param fileName: The file name, if no extension then PNG is assumed.
:param renWin: The render window.
:param rgba: Used to set the buffer type.
:return:
"""
import os
if fileName:
# Select the writer to use.
path, ext = os.path.splitext(fileName)
ext = ext.lower()
if not ext:
ext = '.png'
fileName = fileName + ext
if ext == '.bmp':
writer = vtk.vtkBMPWriter()
elif ext == '.jpg':
writer = vtk.vtkJPEGWriter()
elif ext == '.pnm':
writer = vtk.vtkPNMWriter()
elif ext == '.ps':
if rgba:
rgba = False
writer = vtk.vtkPostScriptWriter()
elif ext == '.tiff':
writer = vtk.vtkTIFFWriter()
else:
writer = vtk.vtkPNGWriter()
windowto_image_filter = vtk.vtkWindowToImageFilter()
windowto_image_filter.SetInput(renWin)
windowto_image_filter.SetScale(1) # image quality
if rgba:
windowto_image_filter.SetInputBufferTypeToRGBA()
else:
windowto_image_filter.SetInputBufferTypeToRGB()
# Read from the front buffer.
windowto_image_filter.ReadFrontBufferOff()
windowto_image_filter.Update()
writer.SetFileName(fileName)
writer.SetInputConnection(windowto_image_filter.GetOutputPort())
writer.Write()
else:
raise RuntimeError('Need a filename.')
```
\ No newline at end of file
### Description
Given a filename, render window and optionally a rgba value, itakes a screen shot from the render window and writes it to a png file.
To use the snippet, click the *Copy to clipboard* at the upper left of the code blocks.
### Implementation
``` python
def WritePNG(fileName, ren_win, rgba = True):
"""
Write the render window view to a png file.
:param fileName:
:param ren_win: The render window.
:param rgba: Used to det the buffer type.
:return:
"""
"""
Save a screenshot.
:param fileName:
:param renWin:
:return:
"""
windowto_image_filter = vtk.vtkWindowToImageFilter()
windowto_image_filter.SetInput(ren_win)
windowto_image_filter.SetScale(1) # image quality
if rgba:
windowto_image_filter.SetInputBufferTypeToRGBA()
else:
windowto_image_filter.SetInputBufferTypeToRGB()
# Read from the front buffer.
windowto_image_filter.ReadFrontBufferOff()
windowto_image_filter.Update()
writer = vtk.vtkPNGWriter()
writer.SetFileName(fileName)
writer.SetInputConnection(windowto_image_filter.GetOutputPort())
writer.Write()
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment