Screen Snipping in a Script

As a Roblox developer, it is currently impossible to take a specified piece of the screen and store it as a Decal / ImageLabel (On the server, not the website). This would be the only way cameras could work because we have no way to store pixels on the screen as an image. The best way to store these would be on the server and not the website. But where on the server? That leads me to the second part of this feature request: a SnipService.

I know that it might sound like a strange name, but it is based around the idea of “snipping” pieces of your screen to take pictures. The new SnipService would be a place to find and store snips. Maybe a player could request a screenshot, specify a name, starting position, and size (basically a Udim2 rectangle), and tell SnipService to save that part of your screen. Another script could check when an image was saved and look for the most recent one. (Forgot to mention that the images would have to be stored in a table somehow, with each specifying the player that uploaded it.)

Now into more detail about the actual snipping part. If someone were to hold a camera in-game and take a picture (assuming that the camera overlay is a UI and UI’s don’t show up in snips), they would be able to send Udim2 data to select the top left corner of the image (Position), and continue to the end of the Size they chose. Along with this, I ask that they can name the image as well, because there would most likely be a lot of images in the game.

(EDIT: I forgot to mention that there must be a cooldown for saving images. I doubt that the server could handle being sent 10 images a second and saving them rapidly.)

(Separate Note: There should also be a way to snip from another camera CFrame, so we don’t have to set the camera there to take a snip of what it sees.)

Other use cases: Being able to upload custom levels with a preview image, phone screen gallery, cutscenes with your player in it, automatically updating minimaps (with each studio update, not in-game), physical photographs / framed photos, low LOD windows for loading zones, and even an in-game snipping tool like the windows app.

18 Likes

This could be even better if the pictures are stored server side / client side during the server, but can also be uploaded to the roblox website as decals for if you wanted to store them in the datastore for example, or perhaps they could make it so you can store them as XML or something in datastores.

I remember a long time ago I saw a place where you could take a picture of yourself on an island and that picture would show on a block in full quality, no idea how they did it and cant remember the game but perhaps they know a good way of doing this.

3 Likes

Similar ideas have been discussed in the past. Multiple Camera Rendering and "Surface Camera" class

I’m not sure if we will ever see run-time camera screens but it would be great to be able to use the thumbnail camera during run-time.

3 Likes

I’m looking for a practical camera ingame by supporting this request.

I have a use case for cameras that can take pictures in game that isn’t screenshot snipping or a cool phone gadget.

You can use viewmodelframe’s to accomplish this.

There are a few problems with ViewportFrames: You can’t use Terrain or particles, worse lighting, no post-processing effects (Blur, DepthOfField, ColorCorrection, etc.), no skybox, and all of the objects you want to render have to be cloned into the ViewportFrame, using up more memory. Just being able to take a picture of the screen would fix this problem.

1 Like