# Vision display view only over the network

**URL:** <https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017>\
**Category:** General Discussion\
**Tags:** perspective, vision\
**Created:** [November 6, 2025, 10:25pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017 "2025-11-06T22:25:55Z")\
**Posts on this page:** 19\
**Page:** 3

<div class="post-metadata">

**Author:** ![mcgheeiv](https://avatars.discourse-cdn.com/v4/letter/m/71c47a/32.png) [@mcgheeiv](https://forum.inductiveautomation.com/u/mcgheeiv)\
**Post date:** [January 6, 2026, 9:04pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/41 "2026-01-06T21:04:27Z")

</div>

Your post and all the replies indicate that your supervisor wants to “eavesdrop” on all the computers that are running this window. If that is the case, there is no need to read further.

If your supervisor, however, just wants to see what the users of a particular window are seeing, then the supervisor could simply open up a vision client that displays that window. If there are multiple windows the client could alternate between them using a timer.

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 6, 2026, 9:49pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/42 "2026-01-06T21:49:16Z")

</div>

Your assessment is correct. That being said, ignition is on an OT network so he would need to RD into a jump box then open the client…… Additionally we have several buildings with different ignition gateways so to see all of them he would need to RD into two different jump boxes. I don’t know about your supervisor but this is not something my boss wants or maybe even can do. He specifically requested a sharepoint site with images of three cells currently with semi-live KPI screen images with more to be added later. I have IT grabbing images from a shared folder on the jump boxes, I just need to get the client to write a screenshot into the shared folder on the gateway (s) and the job is complete.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 6, 2026, 10:00pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/43 "2026-01-06T22:00:16Z")

</div>

> [@Luke\_Waller](#):
>
> IT grabbing images from a shared folder on the jump boxes

Mind boggling. Your IT thinks **shared folders** on a jump box that has access to the OT network is _ **secure?!?** _. Are you trolling us?

If not trolling:

Consider placing a front-end gateway in your IT network that accepts and incoming GAN connection from the OT network. And then putting suitable Perspective dashboards in the front end gateway. In this architecture, live data is **pushed** through a secure protocol (\ ***cough** \* _non-Microsoft_ \ ***cough** \*) to the IT world.

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 6, 2026, 10:21pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/44 "2026-01-06T22:21:59Z")

</div>

NOT TROLLING. The idea of an OT network to our IT department is almost a foreign concept, its been both a struggle to get them on board but at the same time a blessing that they don’t have OT “rules” that limit my ability to do work. At another facility they hired a third party to build a true OT network so fun times in the wild west are going to come to an end soon. You are 100% correct that it isn’t secure. We do not have perspective licenses, that is the next challenge. I have tried several times to move us off Vision but…. Otherwise your suggestion would be a great solution. Thanks for all the help.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 6, 2026, 11:00pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/45 "2026-01-06T23:00:24Z")

</div>

> [@Luke\_Waller](#):
>
> We do not have perspective licenses, that is the next challenge. I have tried several times to move us off Vision but

Understood. You will find that Perspective cannot do everything Vision can do, and vice versa. I strongly recommend my clients use both. (Vision in OT, Perspective in IT, typically.)

---

<div class="post-metadata">

**Author:** ![Matrix\_Engineering](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/matrix_engineering/32/19781_2.png) [@Matrix\_Engineering](https://forum.inductiveautomation.com/u/Matrix_Engineering)\
**Post date:** [January 6, 2026, 11:56pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/46 "2026-01-06T23:56:23Z")

</div>

> [@Luke\_Waller](#):
>
> I cannot really get to the client PC at the moment

I see there have been quite a few replies whilst I was driving there, have skimmed them so apologies if this has been covered but..

start your own client on the same PC you use designer on. It doesn’t have to be the operators station.

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 2:43pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/47 "2026-01-07T14:43:44Z")

</div>

@Matrix_Engineering

Thanks to all your help I finally have proof the script is running:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/9/291b2b154080d55c4ef8dd72cf6884c008dbdb01.png)

Now I just need to debug the script. Some success!

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [January 7, 2026, 2:54pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/48 "2026-01-07T14:54:22Z")

</div>

It’s always nice to get a new error lol.

You may find this function useful for your scripting to see what windows are actually opened instead of just always trying to snapshot the MainWindow. [system.gui.getOpenedWindows | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-gui/system-gui-getOpenWindows)

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 3:07pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/49 "2026-01-07T15:07:09Z")

</div>

Brilliant, that helps, thanks

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/a/8a09bf9bbde6f82520f3e662cd9a8d6ec33ce46a.png)

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 3:10pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/50 "2026-01-07T15:10:25Z")

</div>

Making progress!

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/5/a5f19ce99c1fb07fc5ea4669677bfbdd0d1ae459.png)

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 3:41pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/51 "2026-01-07T15:41:27Z")

</div>

Ok, I am very close, here is the current script:

```python
import os.path, sys
from java.io import File
from javax.imageio import ImageIO

This example prints out the path of each currently opened window to the console.

Component = system.gui.getWindow('Main Windows/Main Window')
bufferedImage = system.print.createImage(Component)

rawPath = system.util.getProperty("user.home") + system.util.getProperty("file.separator") +"Cletus_KPI.jpg"

formattedPath = File(r'C:\Users\Public\Pictures\KPI IMAGES ROBOT 2')

ImageIO.write(bufferedImage , "jpg", formattedPath)

print ("Snapshot success")

```

THis is the error I am getting, it looks like it cannot access the system folder I identified:

`java.io.FileNotFoundException: C:\Users\Public\Pictures\KPI IMAGES ROBOT 2 (Access is denied)`  
`at java.base/java.io.RandomAccessFile.open0(Native Method)`  
`at java.base/java.io.RandomAccessFile.open(Unknown Source)`  
`at java.base/java.io.RandomAccessFile.(Unknown Source)`  
`at java.base/java.io.RandomAccessFile.(Unknown Source)`  
`at java.desktop/javax.imageio.stream.FileImageOutputStream.(Unknown Source)`  
`at java.desktop/com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(Unknown Source)`  
`at java.desktop/javax.imageio.ImageIO.createImageOutputStream(Unknown Source)`  
`at java.desktop/javax.imageio.ImageIO.write(Unknown Source)`  
`at java.base/jdk.internal.reflect.GeneratedMethodAccessor115.invoke(Unknown Source)`  
`at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)`  
`at java.base/java.lang.reflect.Method.invoke(Unknown Source)`  
`at org.python.core.PyReflectedFunction.` **`call`** `(PyReflectedFunction.java:188)`  
`at org.python.core.PyReflectedFunction.` **`call`** `(PyReflectedFunction.java:206)`  
`at org.python.core.PyObject.` **`call`** `(PyObject.java:515)`  
`at org.python.core.PyObject.` **`call`** `(PyObject.java:519)`  
`at org.python.pycode._pyx20.f$0(<TimerScript:LMI_CHAMF_KPI/Snapshot @5,000ms >:17)`  
`at org.python.pycode._pyx20.call_function(<TimerScript:LMI_CHAMF_KPI/Snapshot @5,000ms >)`  
`at org.python.core.PyTableCode.call(PyTableCode.java:171)`  
`at org.python.core.PyCode.call(PyCode.java:18)`  
`at org.python.core.Py.runCode(Py.java:1614)`  
`at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:782)`  
`at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:730)`  
`at com.inductiveautomation.ignition.common.script.TimerScriptTask.run(TimerScriptTask.java:92)`  
`at java.base/java.util.TimerThread.mainLoop(Unknown Source)`  
`at java.base/java.util.TimerThread.run(Unknown Source)`

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 3:53pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/52 "2026-01-07T15:53:22Z")

</div>

Corrected Script:

```python
import os.path, sys
from java.io import File
from javax.imageio import ImageIO

This example prints out the path of each currently opened window to the console.

Component = system.gui.getWindow('Main Windows/Main Window')
bufferedImage = system.print.createImage(Component)

rawPath = system.util.getProperty(r'C:\Users\Public\Pictures') + system.util.getProperty("file.separator") +"Cletus_KPI.jpg"

formattedPath = File(rawPath)

ImageIO.write(bufferedImage , "jpg", formattedPath)

print ("Snapshot success")

```

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 4:00pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/53 "2026-01-07T16:00:36Z")

</div>

FUNCTIONAL WORKING SCRIPT, SOLVED! THANK YOU EVERYONE!!!:

```python
import os # Import os for path handling
from java.io import File
from javax.imageio import ImageIO

Get the reference to the component you want to print

Component = system.gui.getWindow('Main Windows/Main Window')

Create an image of the component

bufferedImage = system.print.createImage(Component)

Define the path to save the image

basePath = r'C:\Users\Public\Pictures'
fileName = "Cletus_KPI.jpg"

Construct the full path

rawPath = os.path.join(basePath, fileName)

formattedPath = File(rawPath)

Use try-except to handle potential issues

ImageIO.write(bufferedImage, "jpg", formattedPath)
print("Snapshot success")

```

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 4:07pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/54 "2026-01-07T16:07:57Z")

</div>

Thanks for your advice here, sincerely appreciated.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 7, 2026, 4:08pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/55 "2026-01-07T16:08:22Z")

</div>

> [@Luke\_Waller](#):
>
> ```python
> basePath = r'C:\Users\Public\Pictures'
> fileName = "Cletus_KPI.jpg"
> 
> Construct the full path
> 
> rawPath = os.path.join(basePath, fileName)
> 
> formattedPath = File(rawPath)
> 
> ```

This can all be collapsed to:

```python
formattedPath = File(File(r'C:\Users\Public\Pictures'), "Cletus_KPI.jpg")

```

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 4:09pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/56 "2026-01-07T16:09:58Z")

</div>

Perfect, I will make the change

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 4:15pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/57 "2026-01-07T16:15:27Z")

</div>

> [@pturmel](#):
>
> `formattedPath = File(File(r'C:\Users\Public\Pictures'), "Cletus_KPI.jpg")`

Refined Working Script! Thanks Again

```python
import os # Import os for path handling
from java.io import File
from javax.imageio import ImageIO

# Get the reference to the component you want to print
Component = system.gui.getWindow('Main Windows/Main Window')

# Create an image of the component
bufferedImage = system.print.createImage(Component)

# Define the path to save the image
formattedPath = File(File(r'C:\Users\Public\Pictures'), "Cletus_KPI.jpg")

ImageIO.write(bufferedImage, "jpg", formattedPath)

print("Snapshot success")

```

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [January 7, 2026, 6:25pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/58 "2026-01-07T18:25:59Z")

</div>

> [@Luke\_Waller](#):
>
> `print("Snapshot success")`

Very minor but now that you have a working script probably better to log this so its longer living in the vision client instead of printing. Do a try/except and log errors too in case something unexepected occurs. Otherwise congrats!

---

<div class="post-metadata">

**Author:** ![Luke\_Waller](https://avatars.discourse-cdn.com/v4/letter/l/46a35a/32.png) [@Luke\_Waller](https://forum.inductiveautomation.com/u/Luke_Waller)\
**Post date:** [January 7, 2026, 7:14pm UTC](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017/59 "2026-01-07T19:14:31Z")

</div>

Thank you, Will implement

[Previous page](https://forum.inductiveautomation.com/t/vision-display-view-only-over-the-network/112017.md?page=2)
