freealise commited on
Commit
6f41c03
·
verified ·
1 Parent(s): 28eba16

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -0
app.py CHANGED
@@ -749,6 +749,40 @@ function drawLine(x, y) {
749
  window.drawLine = drawLine;
750
 
751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  var intv_ = setInterval(function(){
753
  if (document.getElementById("image_edit") && document.getElementById("image_edit").getElementsByTagName("canvas")) {
754
  document.getElementById("image_edit").getElementsByTagName("canvas")[0].oncontextmenu = function(e){e.preventDefault();}
@@ -968,6 +1002,11 @@ with gr.Blocks(css=css, js=js, head=head) as demo:
968
  BABYLON.Engine.LastCreatedScene.activeCamera.metadata.pipeline.imageProcessing.exposure = this.value;
969
  this.parentNode.childNodes[2].innerText = BABYLON.Engine.LastCreatedScene.activeCamera.metadata.pipeline.imageProcessing.exposure;
970
  '/><span>1.0</span>""")
 
 
 
 
 
971
  render = gr.Button("Render")
972
  input_json.input(show_json, inputs=[input_json], outputs=[processed_video, processed_zip, output_frame, output_mask, output_depth, coords])
973
 
 
749
  window.drawLine = drawLine;
750
 
751
 
752
+ window.screenshot = false;
753
+
754
+ function snapshot() {
755
+ if (BABYLON) {
756
+ screenshot = true;
757
+ BABYLON.Engine.LastCreatedScene.getEngine().onEndFrameObservable.add(function() {
758
+ if (screenshot === true) {
759
+ screenshot = false;
760
+ try {
761
+ BABYLON.Tools.CreateScreenshotUsingRenderTarget(BABYLON.Engine.LastCreatedScene.getEngine(), BABYLON.Engine.LastCreatedScene.activeCamera,
762
+ { precision: 1.0 }, (durl) => {
763
+ var cnvs = document.getElementById("model3D").getElementsByTagName("canvas")[0]; //.getContext("webgl2");
764
+ var svgd = `<svg id="svg_out" viewBox="0 0 ` + cnvs.width + ` ` + cnvs.height + `" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
765
+ <defs>
766
+ <filter id="blur" x="0" y="0" xmlns="http://www.w3.org/2000/svg">
767
+ <feGaussianBlur in="SourceGraphic" stdDeviation="1" />
768
+ </filter>
769
+ </defs>
770
+ <image filter="url(#blur)" id="svg_img" x="0" y="0" width="` + cnvs.width + `" height="` + cnvs.height + `" xlink:href=\"` + durl + `\"/>
771
+ </svg>`;
772
+ document.getElementById("cnv_out").width = cnvs.width;
773
+ document.getElementById("cnv_out").height = cnvs.height;
774
+ document.getElementById("img_out").src = "data:image/svg+xml;base64," + btoa(svgd);
775
+ }
776
+ );
777
+ } catch(e) { alert(e); }
778
+ // https://forum.babylonjs.com/t/best-way-to-save-to-jpeg-snapshots-of-scene/17663/11
779
+ }
780
+ });
781
+ }
782
+ }
783
+ window.snapshot = snapshot;
784
+
785
+
786
  var intv_ = setInterval(function(){
787
  if (document.getElementById("image_edit") && document.getElementById("image_edit").getElementsByTagName("canvas")) {
788
  document.getElementById("image_edit").getElementsByTagName("canvas")[0].oncontextmenu = function(e){e.preventDefault();}
 
1002
  BABYLON.Engine.LastCreatedScene.activeCamera.metadata.pipeline.imageProcessing.exposure = this.value;
1003
  this.parentNode.childNodes[2].innerText = BABYLON.Engine.LastCreatedScene.activeCamera.metadata.pipeline.imageProcessing.exposure;
1004
  '/><span>1.0</span>""")
1005
+ snapshot = gr.HTML(value="""
1006
+ <a onclick='snapshot();'>Screenshot</a><br/>
1007
+ <img src='' id='img_out' onload='var ctxt = document.getElementById(\"cnv_out\").getContext(\"2d\");ctxt.drawImage(this, 0, 0);'/><br/>
1008
+ <canvas id='cnv_out'></canvas>
1009
+ """)
1010
  render = gr.Button("Render")
1011
  input_json.input(show_json, inputs=[input_json], outputs=[processed_video, processed_zip, output_frame, output_mask, output_depth, coords])
1012