What’s preventing you from using CanvasDraw’s method for images?
CanvasDraw already does this with its image functions and it is quite efficient too since its all cached data from the Image importer plugin.
Unless your problem is the speed of importing images with my plugin, otherwise CanvasDraw’s method is already fast enough for GIFs and small videos.
CancasDraw also uses a single instance (an empty folder in this case) to store an image as a compressed string with attributes. So that’s only a few kilobytes of data for an image instance thats like 256x256p in a roblox place that CanvasDraw can load, and then draw.
CanvasDraw.CreateCanvas(CanvasFrame, Vector2.new(256, 256))
local SaveObject = script.Noob -- That folder instance that stores image data as compressed string values
-- Covert the compressed ImageData strings into a cache of readable values for CanvasDraw
local ImageData = CanvasDraw.GetImageDataFromSaveObject(script.Noob)
-- Draw the image to the canvas
CanvasDraw.DrawImage(ImageData)