saveImage()
Create and save an image of the screen.
Usage
savedFileName = vis.saveImage( width = 600, height = 400,
fileName = None, fileType = 'png',
dirName = None )
Parameters
- width (integer)
- Width of image in pixels.
- height (integer)
- Height of image in pixels.
- fileName (string)
- Image file name.
- If the extension is included, the argument of fileType is ignored and the actual file type is determined by the extension.
- If the extension is not included, the actual file type is taken from the argument fileType.
- If fileName is None, fileType is used to generate the actual file name of Image_*.fileType.
- fileType (string)
- Image file type. Currently only .png format is supported.
- dirName (string)
- The directory that the image will be saved in. CWD represents the current working directory of AcuSolve. If dirName is not specified, the image file will be saved in CWD/Figures/. Otherwise the file will be saved in CWD/Figures/dirName/.
Return Value
- savedFileName (string)
- Saved image file name, which contains the full directory of the file savedFileName = CWD/Figures/dirName/filename.
Errors
None
Description
It was found that 600 pixels can fit well into the width of a regular letter paper. If you would
like to save the image with more pixels, the following way
is
suggested:
scaleFactor=3
imageFileName = vis.saveImage( width=600*scaleFactor, height=400*scaleFactor )
addFigure(imageFileName, scale=1.0/scaleFactor)
Here the scaleFactor
is an integer. At first an image with pixels of
600*scaleFactor
x
400*scaleFactor
is saved. But
this raw image cannot fit into the paper very well. So in
addFigure
the image is scaled
smaller with the same scaleFactor
. In the
final .pdf report, the image has more pixels but the same
physical size, so a higher resolution is obtained.
The following section of code generates a figure in which the size of the actor fits
well:
# cpl_y is a cut plane object produced by vis.addCPlane
cutBndBox=cpl_y.sceneGraph.getBoundingBox()
# cutBndBox gives the bounding box of the coordinates of cpl_y, which is a list contains [xmin,ymin,zmin,xmax,ymax,zmax]
aspectRatio=(cutBndBox[3]-cutBndBox[0])/(cutBndBox[5]-cutBndBox[2])
# Since the cut plane is normal to Y axis, the camera will be adjusted normal to Y axis. The width of the actor is measured along X axis and the height is along Z axis. The aspect ratio is obtained by (xmax-xmin)/(zmax-zmin)
vis.zoom( -math.log(aspectRatio) )
# The command above gives a view in which the actor fits the image best.
imgFct=4
fname = vis.saveImage( width =600*imgFct , height = 600*imgFct/aspectRatio, fileName='Mesh_xz.png')
# The size of the image depends on the aspect ratio of the actor