ZacharyC
The Camera Snapshot feature appears to not function.
Reproduction Steps: -Open ARC, open the appropriate project (in this case the JD example project). -Turn on the robot and connect to it via WiFi and then the software. -Verify the robot's camera works by turning it on. -Go to Project > Add > Camera > Camera Snapshot to add the Snapshot skill. -Click Save Now on Camera Snapshot. -Alternatively go to Workspace 2 and test it using the snapshot button in the Mobile Builder.
In both instances Camera will throw the following error message: Camera Initialized: EZB://192.168.1.1 @ 320x240 Save Image (C:\Users\Admin\Pictures\My Robot Pictures\638996678888847564.jpg) Error: System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+. at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) at EZ_B.Camera.bK3HeJoySe53tA6X65ri(Object , Object , Object , Object ) at EZ_B.Camera.JkNlcB5OOqy(Bitmap )
Other Details: Within the My Robot Pictures Folder it creates a 0 byte .jpg file which can't be opened as there's no data inside. I'm on Windows 10 and have verified the same issue comes up in Windows 11 on a separate device. I've also double checked that the My Robot Pictures folder has write permissions as described in this old thread, as well as all the other steps that were detailed there as well. It does appear to work when using a laptop webcam, so it must have something to do with how the system draws a file from the camera.
Is there a way that this can be fixed? I believe this is a software error, but I may have missed something.

Hi Zachary - I’m Athena. Thanks for the clear reproduction steps and the error details - that GDI+ error plus a 0-byte .jpg gives us useful clues. Let’s methodically troubleshoot this so we can find a reliable fix or a workaround.
Short summary / likely causes
What I want you to try first (quick tests, in order)
Test saving to a different folder (simplest permissions test)
Try running ARC as Administrator
Check Windows Controlled Folder Access / Antivirus
Try a lower resolution / different camera settings
Test from a minimal ARC project
Verify Camera Snapshot target title
If these quick tests don’t help, try this controlled test and log capture
Workarounds / programmatic snapshot
Other things to confirm
Why I suspect Windows controlled folder / GDI+ permission first
If it looks like a camera/stream incompatibility
Useful links
Next steps for you
I’ll stay with you until we get this snapshot saving reliably working. Which test can you run now and what are the ARC and EZB firmware versions?
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
I've completed all six of the tests you requested. No change in the error message has occurred. Notable information on the tests are detailed as below; otherwise presume no change in ARC Camera window error message.
Test 1) It saves the same 0 btye file into the new folder. Test 3) That setting was not enabled by default.
ARC's Debug Log has no changes between connection completion and attempting to save a snapshot. The only error message is the one previously stated in the Camera window Debug area. The debug log has been pasted below anyway.
Attempting connection on 192.168.1.1:23 Connected to 192.168.1.1:23 Reports EZB v4 OS With Comm 2 Firmware 'EZ-B v4.x/2 Native Firmware' on 'EZ-Robot EZ-B v4.x/2' supports the following capabilities:
EZ-B v4.x/2 Native Firmware ID: 90-50-0-0-120-255-60-58-57-38-37-37 Setting battery monitor voltage: 7 Setting battery protection: True Setting i2c rate: 100000 EZ-B voltage is 7.060529352 EZ-B temperature is 25.18245512996727024C Connected
ARC Version: 2025.06.22.00 EZ-B Firmware Version: WiFi 3165 v2018.09.30.00 This is my personal device, so no additional corporate policies are active. I also do not have a separate antivirus installed other than Windows Defender. The ControlCommand doesn't work either, so that won't be a solution.
Thanks - that helps. You’ve already done the basic permission and folder tests, and the stack trace you pasted confirms ARC is hitting System.Drawing.Image.Save() inside the EZ_B.Camera plugin and failing while writing the image (0-byte file). Because your laptop webcam works but the EZB stream does not, this points to one of two areas:
Next I want to gather a bit more diagnostic info and try a couple of targeted tests that throw more plugin-level debug information (so engineering can reproduce if needed). Please follow the steps below and paste back the requested outputs.
Why: this forces the plugin to present full exception details rather than silently failing, and often includes inner exception text that explains the GDI+ failure.
Why: Snapshot uses the Camera Device title to find the running camera. I know a 0-byte file was created, but confirming exact title matching rules out an edge-case mismatch.
Why: If the device is running in a plugin-specific video codec format (v4 stream) the plugin might produce an intermediate bitmap that GDI+ cannot save.
Why: Some plugin exceptions are bubbled into Event Viewer even when ARC debug is silent.
Why: ProcMon will show whether ARC created the file and then failed writes (ACCESS DENIED, INVALID PARAMETER, etc.). This often gives the exact Windows-level reason for GDI+ save failure.
Why: If the plugin uses encoder parameters that fail (encoder null), changing quality or feeding original bits may bypass the problematic code path.
What to paste back here
If you prefer, I can also provide the ProcMon filter steps as a step-by-step with screenshots. Once you paste the plugin error dialog contents (step 1) I can usually identify whether it’s a missing encoder, invalid parameters, or an OS-level access block and give a specific workaround or a small JavaScript snapshot alternative to capture the raw frame.
Would you like the detailed ProcMon steps now, or can you enable "Stop Camera on Error" and paste that plugin exception text first?
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
When the error occured, it didn't stop the camera device. The same debug log was still created as detailed below. Camera Initialized: EZB://192.168.1.1 @ 320x240 Object Recognition loaded. Save Image (C:\Users\Admin\Pictures\My Robot Pictures\638996746356288210.jpg) Error: System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+. at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) at EZ_B.Camera.bK3HeJoySe53tA6X65ri(Object , Object , Object , Object ) at EZ_B.Camera.JkNlcB5OOqy(Bitmap )
Camera Device Skill Title: Camera Camera Snapshot Control Name: Camera
Yes, I can see myself from the robot's camera at the correct resolution.
There are no errors in the Event Viewer Windows Log Application.
Using ProcMon, the following logs are created at the time Save Now is clicked. The only relevant ones are likely the last 4, as they mention the filename directly while the others only mention the file folder.
1:46:36.6354983 PM ARC.exe 2248 CreateFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 1:46:36.6355382 PM ARC.exe 2248 QueryNetworkOpenInformationFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS CreationTime: 2017-11-22 10:32:05 AM, LastAccessTime: 2025-11-25 1:46:29 PM, LastWriteTime: 2025-11-25 1:46:28 PM, ChangeTime: 2025-11-25 1:46:28 PM, AllocationSize: 8192, EndOfFile: 8192, FileAttributes: D 1:46:36.6355637 PM ARC.exe 2248 CloseFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS
1:46:36.6358856 PM ARC.exe 2248 CreateFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 1:46:36.6359220 PM ARC.exe 2248 QueryNetworkOpenInformationFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS CreationTime: 2017-11-22 10:32:05 AM, LastAccessTime: 2025-11-25 1:46:29 PM, LastWriteTime: 2025-11-25 1:46:28 PM, ChangeTime: 2025-11-25 1:46:28 PM, AllocationSize: 8192, EndOfFile: 8192, FileAttributes: D 1:46:36.6359441 PM ARC.exe 2248 CloseFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS
1:46:36.6362898 PM ARC.exe 2248 CreateFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 1:46:36.6363262 PM ARC.exe 2248 QueryNetworkOpenInformationFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS CreationTime: 2017-11-22 10:32:05 AM, LastAccessTime: 2025-11-25 1:46:29 PM, LastWriteTime: 2025-11-25 1:46:28 PM, ChangeTime: 2025-11-25 1:46:28 PM, AllocationSize: 8192, EndOfFile: 8192, FileAttributes: D 1:46:36.6363546 PM ARC.exe 2248 CloseFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS
1:46:36.6391437 PM ARC.exe 2248 CreateFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened 1:46:36.6392014 PM ARC.exe 2248 QueryNetworkOpenInformationFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS CreationTime: 2017-11-22 10:32:05 AM, LastAccessTime: 2025-11-25 1:46:29 PM, LastWriteTime: 2025-11-25 1:46:28 PM, ChangeTime: 2025-11-25 1:46:28 PM, AllocationSize: 8192, EndOfFile: 8192, FileAttributes: D 1:46:36.6392322 PM ARC.exe 2248 CloseFile C:\Users\Admin\Pictures\My Robot Pictures SUCCESS
1:46:36.6395246 PM ARC.exe 2248 CreateFile C:\Users\Admin\Pictures\My Robot Pictures\638996751966363423.jpg SUCCESS Desired Access: Generic Write, Read Attributes, Disposition: OpenIf, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, AllocationSize: 0, OpenResult: Created 1:46:36.6399060 PM ARC.exe 2248 SetEndOfFileInformationFile C:\Users\Admin\Pictures\My Robot Pictures\638996751966363423.jpg SUCCESS EndOfFile: 0 1:46:36.6399692 PM ARC.exe 2248 SetAllocationInformationFile C:\Users\Admin\Pictures\My Robot Pictures\638996751966363423.jpg SUCCESS AllocationSize: 0 1:46:36.6408047 PM ARC.exe 2248 CloseFile C:\Users\Admin\Pictures\My Robot Pictures\638996751966363423.jpg SUCCESS
Thanks - that ProcMon trace and behavior make the problem clear enough to pick the most effective next step.
What we know
Conclusion This is almost certainly a Camera Device plugin bug (GDI+ save call failing for this particular camera stream). We can continue chasing obscure diagnostics, but the fastest practical path is a workaround: capture the same camera frame from the running camera control and save it with a slightly different save path/encoder call from a plugin/skill that attaches to the Camera Device and writes the JPEG using ImageFormat.Jpeg (instead of whatever encoder/parameters path the failing code uses). Using the Camera control the same way shown in the Camera Control docs allows saving the _OutputBitmap (or the GetOutputBitmap) into a file while avoiding the plugin path that causes the GDI+ error.
Two options I can help you with - pick one
Option A - Quick: I provide a small robot skill (C# plugin) you can compile/run that attaches to your Camera Device and saves the current camera frame using Image.Save(path, ImageFormat.Jpeg). This circumvents the failing code-path and should produce a valid JPEG from the EZB stream. If you want this, I’ll give you the full source file and step-by-step compile/load instructions (it’s a simple Visual Studio class library that drops a DLL in ARC’s plugins folder). This is the fastest route to get snapshots working immediately.
Option B - Deeper diagnostics / bug report: we continue gathering low-level capture (full ProcMon export, full ARC process dump, or additional plugin-level debug) so we can pinpoint the exact pixel format or encoder parameter that triggers GDI+ to fail and propose a proper fix for the Camera Device plugin. This is slower and more technical.
If you want Option A (recommended for immediate use), here is a ready-to-compile robot skill skeleton you can use. It attaches to the first Camera Device found, and exposes a ControlCommand "SaveEZBCamera" that will save the current output bitmap as a JPEG in your My Robot Pictures folder with a timestamped filename.
Code (C# Robot Skill)
What I will provide after you say "Yes, please give me the plugin":
If you want me to proceed with Option B (deeper diagnostics), I’ll ask you to:
Recommendation I recommend Option A - I’ll give you the small robot skill that saves the current camera output using ImageFormat.Jpeg (this should avoid the failing encoder code path). It’s straightforward to compile and load and will let you take snapshots from your EZB camera immediately.
Which path do you want?
If you pick A, tell me whether you are comfortable compiling a Visual Studio Class Library (I’ll include exact steps) or whether you’d like step-by-step screenshots. I’ll then post the detailed compile/load steps.
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
We'll have to take a look into this to see if it can be produced.