Convert Decal asset id to Image asset id

New Format

Please complete one of the following sentences:
As a Roblox developer, it is currently too hard to . . .
As a Roblox developer, it is currently impossible to . . .

As a Roblox developer, it is currently impossible to properly convert a decal id to image id with the currently available in-game APIs. (e.g. 1156386453 (https://www.roblox.com/library/1156386453/oneway2) to 1156386447 (https://www.roblox.com/library/1156386447/oneway2))

Currently the approach commonly used to do this is to take the Decal asset id (1156386453), then keep subtracting 1 from this id until an Image asset is found with the same owner as the original Decal asset.

This has two issues:

  • You use up a lot of requests to find the Image asset (i.e. you have to check ids 1156386452 -> 1156386451 -> 1156386450 -> 1156386449 -> 1156386448 -> 1156386447 for the sample above). During peak hours, asset ids can be ~25–30 apart! There obviously is a search limit too, you don’t want to keep searching infinitely if the asset is not found…
  • This does not work at all for Decals owned by groups, where the Image asset is owned by the uploader.

If Roblox is able to address your issue, how would it improve your game and/or your development experience? Please be as specific as possible.

We would be able to robustly retrieve the Image belonging to a Decal with much lower failure rates.


Use case: I use this runtime to allow players to pick images from the catalog (or their own inventory). Users always pick Decal assets, so those have to be converted to Image assets before they can be applied to, for example, in-game Decals.


(An alternative would be to seamlessly load the associated Image whenever a Decal asset id is assigned to Decal instances, a bit like Studio does nowadays, but that does result in an unavoidable extra Http request for every unique Decal used…)

92 Likes

100,000% support for this kinda feature, even this far into the future past when this was originally posted. Heck, even another alternative would be if InsertService didn’t do the whole “In order to successfully insert a model, it must be owned either by the place creator or by the user Roblox.” when it comes to Decals. I’m fine with not inserting models, because I realize the piracy attempts there, but when you’re taking a Decal, it’s just an image, that is extremely easy to take from the site and put into Studio anyways. It’s more about giving the users good features that allow more creativity into the future.

Please Roblox. Do something to allow us to use decals that users submit into the game. And before anyone tries to claim that “allowing a user to put a decal in a game is dangerous because they can do bad things with it and it could get your game shutdown.” If the moderation system works, that won’t happen.

22 Likes

It is currently too hard to retrieve an image url from a decal id from a script. There is no clean method of getting it currently. Right now you have to write code to subtract one number from the decal id and verify it and repeat until you get the correct image.

There is a way to get the image url with InsertService, however this is not viable for other people’s decals, since InsertService restricts calls to only your assets.

Edit: Roblox has added API support for this. Use rbxthumb for any Roblox asset thumbnail!

16 Likes

Currently suffering! Roblox has scaled up and now the difference can be almost 200 assets that I need to sift through! Roblox please D:

5 Likes

They should just remove decals altogether and make it so the image id is what the toolbox uses. It’s a redundant asset and only contributes to unnecessary asset id bloat. It’s trivial to create a decal instance from an image id, and a huge headache to convert the decal’s id to an image id.

8 Likes

Found something! Take a look if you’re interested:

@ScriptOn @Tomarty Not sure if you were here because you needed this.

I didn’t test this out much, but it seems to work.

1 Like

A little late to seeing this, while this is a “solution” it’s not a proper one.
That forces the image quality to 420x420. If the image you want to use is already 420x420 or below, then I suppose it’s fine but in most cases these days people use 512x512 or the Roblox maximum 1024x1024 [if you upload an image above 1024x1024, it downscales to 1024x1024]

It used to be quite easy to tell someone “just remove 1 from the number of the item” but now things have gotten much harder because the difference between Image and Decal are so far apart.


While I use the method you linked to above for when someone uploads a car texture to my game as a Decal ID rather than an Image ID, it’s extremely noticeable which one is which.

These days I resort to telling people to “get the number from Studio” [as it’s the easiest way to describe how to obtain the Image ID] but users who don’t own a computer or have never opened Studio have no idea what to do.

As a Roblox developer, it is currently too hard to get user generated images into your game without having to hassle your users to find “the right ID” to use.

Crazy to see I’ve had the same gripe for 4 years now.

3 Likes

This should be insanely easy since Decals are just RBXMX files with a decal instance pointing to the Image