CaptureService can't cross-server

I tried playing with CaptureService api and i tried using messagingservice to send the data to all servers about the rbxtemp:// id and the image doesnt show in other servers, the servers receives the information but for some reason the server cannot show the image in other servers

because its a temp id. in this case it means its only going to work on the server it was captured in.

if you want to transfer the image to another server you’d have to send the pixel data instead of the image id. best way to do this would be through editable images and recreate the image on the other servers

Note: you would need a verified ID on your account to enable the editable image API on your game

whats editable image?, il read more about it but if u can give me quick idea abt it, it would help me aswell

its an api that allows you to edit or create images at runTime

heres a video that talks about it https://youtu.be/lNmA9WATqQU?si=5EX9g7cUyui8Rxdd, im sure its outdated because the api has changed allot but it should give you a good idea on what it is and its capabilities

image
OOF

Since you can’t use temporary ids, you’ll have to have the player taking the capture also save it (probably for the best anyway since it means they want to keep the capture).

You can prompt the player to save it through CaptureService:PromptSaveCapturesToGallery() and use the callback function to get the content ids (the permanent ones). You can also use the CaptureService.UserCaptureSaved event to get the content id.

Using those content ids should also prevent you from having to use editable images.

Looks like it was disabled at some point. Seems like it will come back, but who even knows how long until then.

my goal is just to have the player shares the sceneries they took from my game to the rest of the other servers

Oooohh, good to know that, would definitely come in handy, one thing im worried is that if roblox would even allow me to send such huge data using messaging service, because messaging service only allows 4kb of data, and editableimage default pixel is 1024x1024 which is over million bits, not to mention it needs to have each pixel in table form of {r,g,b,a}

im sure theyre ways to compress the image, and for tables, i think the CanvasDraw Module & Plugin encodes it into a string which can be decoded back into a image

Turns out I was wrong, the saving functions just return the same temporary ids, my bad for the mistake. I suppose you’ll just have to wait like @CompWasHere mentioned.

It has a two very useful methods for this case in particular. .CompressImageData() and .DecompressImageData(), which can allow you to save and load a 1024x1024 image on a single key with no issues

1 Like

will it be less than 4kb?, because once editableimage allows temporary content to be taken, i will use that, but i dont think even stringtype of the whole 1024x1024 pixel will still be less than 4kb

it will be less than 4MB. Even compressed image files are typically around 100KB to even as high as 3MB at 1024x1024.

so your 4kb suggestion is pretty well impossible unless the image is a couple colored rectangles or is at a much lower resolution

however, if you meant MB (which 4 MB is a datastore key limit, then yes, this will fit within that)

i guess il just use datastore to store the image, and use messagingservice (max 4kb message) to just send the go signal for the server to get the data from the datastore for the current image stored in