Skip to content

Commit f9a547c

Browse files
more options : filename/output_extention/background
1 parent 9e0c637 commit f9a547c

File tree

2 files changed

+41
-10
lines changed

2 files changed

+41
-10
lines changed
Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,21 @@
11
{
2-
"rpc": "screenshot",
3-
"type": "object",
4-
"properties": {},
5-
"required": [],
6-
"additionalProperties": false
7-
}
2+
"rpc": "take_screenshot",
3+
"type": "object",
4+
"properties": {
5+
"filename": {
6+
"type": "string"
7+
},
8+
"output_extension": {
9+
"type": "string"
10+
},
11+
"include_background": {
12+
"type": "boolean"
13+
}
14+
},
15+
"required": [
16+
"filename",
17+
"output_extension",
18+
"include_background"
19+
],
20+
"additionalProperties": false
21+
}

src/opengeodeweb_viewer/vtk_protocol.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# Third party imports
66
import vtk
77
from vtk.web import protocols as vtk_protocols
8-
from vtkmodules.vtkIOImage import vtkPNGWriter
8+
from vtkmodules.vtkIOImage import vtkPNGWriter, vtkJPEGWriter
99
from vtkmodules.vtkRenderingCore import (vtkWindowToImageFilter)
1010
from wslink import register as exportRpc
1111

@@ -286,17 +286,34 @@ def setVertexAttribute(self, params):
286286
def takeScreenshot(self, params):
287287
validate_schemas(params, take_screenshot_json)
288288
print(f"{params=}", flush=True)
289+
filename = params["filename"]
290+
output_extension = params["output_extension"]
291+
include_background = params["include_background"]
289292
renderWindow = self.getView("-1")
293+
renderer = self.get_renderer()
294+
290295
w2if = vtkWindowToImageFilter()
296+
297+
if not include_background:
298+
# renderer.SetBackground([255,255,255])
299+
# renderer.SetLayer(1)
300+
renderWindow.SetAlphaBitPlanes(1)
291301
w2if.SetInput(renderWindow)
292-
w2if.SetInputBufferTypeToRGB()
302+
w2if.SetInputBufferTypeToRGBA()
293303
w2if.ReadFrontBufferOff()
294304
w2if.Update()
305+
renderWindow.SetAlphaBitPlanes(0)
306+
307+
if output_extension == "png":
308+
writer = vtkPNGWriter()
309+
elif output_extension == "jpg":
310+
writer = vtkJPEGWriter()
295311

296-
writer = vtkPNGWriter()
297-
writer.SetFileName(os.path.join(self.DATA_FOLDER_PATH, 'screenshot.png'))
312+
writer.SetFileName(os.path.join(self.DATA_FOLDER_PATH, filename + '.' + output_extension))
298313
writer.SetInputConnection(w2if.GetOutputPort())
299314
writer.Write()
315+
# renderer.SetLayer(0)
316+
return
300317

301318
def get_data_base(self):
302319
return self.getSharedObject("db")

0 commit comments

Comments
 (0)