I had this problem and I solved it like this Copy ID and paste it in decal then copy the link from the decal and paste it wherever you want(when you are changing images from script).
Hope this helps.
For example, if my image id is 1564949 sometimes when I paste that in decal it changes to original id don’t know why.
The reason this is happening is because you’re trying to load a catalogue ID, not an image asset id. Anything displayed in-game is handled by its asset ID. This is also why pasting your ID into an asset id box converts the number to an in-game usable format.
Preloading doesn’t solve the issue because the asset id itself is not a proper usable asset. It’s merely a unique identifier on the site library.
I know this was article was created over a year ago, but I found a solution that works.
Set the texture or image property to: “https://www.roblox.com/asset-thumbnail/image?assetId=” … Id … “&width=420&height=420&format=png”
Directly setting the texture or image property to the decal or asset Id of the decal Id doesn’t work because the game doesn’t know to load the image. I’m not sure exactly why the way I showed works and the other doesn’t, but I think it has something to do with the fact that this pulls the image from Roblox in real-time.