from my experiences,
add a browser object
add a scroll to behavior to the sprite containing their work, or an invisible uninteractive sprite in their workspace.
on trigger > system> set canvas size to workspace size (width, height of workspace)
>system> Take Snapshot of Canvas
this will close the viewport to the dimensions of the workspace, and then screenshot the viewport, so as you dont have your controls in your final photo.
System>On Snapshot>Browser>Invoke Download > CanvasSnapshot (should be able to select PNG OR Jpg, Quality is ignored for PNG Files, as they save at 100%)
For My Project, I Added A Text Input Box, And In Invoke Download Where It Says File Name, I Put TextInput.Text , so as when the user saves it names the file whatever value they've put into the text input box.
i published an app yesterday that does exactly what you're looking for. check it out.
https://www.scirra.com/arcade/other-gam ... aker-23870