image

Run Settings
LanguageLua
Language Version
Run Command
local HttpService = game:GetService("HttpService") local MRMF = loadstring(HttpService:GetAsync("https://sbin.wya.rip/lib/MRMF.luau"))() function process(images) local response = HttpService:RequestAsync({ Url = "https://sbin.wya.rip/image-processing/mrmf", Method = "POST", Body = HttpService:JSONEncode(images), Headers = { ["Content-Type"] = "application/json" } }) return response end function draw(parent, pixelsize, cframe, response) local image = MRMF(response.buffer, true) local pixelarray = image.frames[1] local holder = Instance.new("WorldModel") holder.Parent = parent local parts = 0 local part = Instance.new("Part") part.CanQuery = false part.CanTouch = false part.CanCollide = false part.CastShadow = false part.Material = Enum.Material.Air part.Name = "Base" part.Locked = true part.Size = Vector3.new(1, 0, 1) * pixelsize local function plot(x, y, width, height, color, alpha) if alpha <= 0.03 then return end local new = part:Clone() new.Archivable = false new.Size = Vector3.new(pixelsize * width, pixelsize, pixelsize * height) new.Color = color new.Transparency = 1 - alpha new.CFrame = cframe * CFrame.new(-pixelsize * image.width * 0.5, 0, -pixelsize * image.height * 0.5) * CFrame.new(pixelsize * (x - 1 + (width - 1) * 0.5), 0, pixelsize * (y - 1 + (height - 1) * 0.5)) new.Parent = holder parts += 1 if parts % 300 == 0 then task.wait() end end local function getColor(x, y) local pos = (y - 1) * image.width * 4 + (x - 1) * 4 + 1 local r, g, b, a = pixelarray[pos], pixelarray[pos + 1], pixelarray[pos + 2], pixelarray[pos + 3] return r, g, b, a end local function isRegionUniform(x1, y1, x2, y2) local r1, g1, b1, a1 = getColor(x1, y1) local threshold = 0.045 for y = y1, y2 do for x = x1, x2 do local r2, g2, b2, a2 = getColor(x, y) if math.abs(r1 - r2) >= threshold or math.abs(g1 - g2) >= threshold or math.abs(b1 - b2) >= threshold or math.abs(a1 - a2) >= threshold then return false end r1 = r1 + (r2 - r1) * 0.5 g1 = g1 + (g2 - g1) * 0.5 b1 = b1 + (b2 - b1) * 0.5 end end return true, Color3.new(r1, g1, b1), a1 end local function quadtree(x1, y1, x2, y2) if x1 > x2 or y1 > y2 then return end local uniform, color, alpha = isRegionUniform(x1, y1, x2, y2) if uniform then plot(x1, y1, x2 - x1 + 1, y2 - y1 + 1, color, alpha) else local midX = math.floor((x1 + x2) / 2) local midY = math.floor((y1 + y2) / 2) quadtree(x1, y1, midX, midY) quadtree(midX + 1, y1, x2, midY) quadtree(x1, midY + 1, midX, y2) quadtree(midX + 1, midY + 1, x2, y2) end end quadtree(1, 1, image.width, image.height) print("PART COUNT: " .. parts) print("PIXEL COUNT: " .. #pixelarray // 4) return holder end local remote = Instance.new("RemoteEvent", script) NLS([[local gui = Instance.new("ScreenGui") gui.Name = "gui" gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling local input = Instance.new("TextBox") input.Name = "input" input.ClearTextOnFocus = false input.CursorPosition = -1 input.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) input.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) input.PlaceholderText = "input image url here..." input.Text = "" input.TextColor3 = Color3.fromRGB(255, 255, 255) input.TextSize = 12 input.TextWrapped = true input.TextXAlignment = Enum.TextXAlignment.Left input.AnchorPoint = Vector2.new(0.5, 0.5) input.BackgroundColor3 = Color3.fromRGB(40, 50, 56) input.BorderColor3 = Color3.fromRGB(0, 0, 0) input.BorderSizePixel = 0 input.Position = UDim2.fromScale(0.455, 0.8) input.Size = UDim2.new(0.21, 0, 0, 24) local uIPadding = Instance.new("UIPadding") uIPadding.Name = "UIPadding" uIPadding.PaddingBottom = UDim.new(0, 4) uIPadding.PaddingLeft = UDim.new(0, 8) uIPadding.PaddingRight = UDim.new(0, 8) uIPadding.PaddingTop = UDim.new(0, 4) uIPadding.Parent = input local uICorner = Instance.new("UICorner") uICorner.Name = "UICorner" uICorner.CornerRadius = UDim.new(1, 0) uICorner.Parent = input local depth = Instance.new("TextBox") depth.Name = "depth" depth.ClearTextOnFocus = false depth.CursorPosition = -1 depth.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) depth.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) depth.PlaceholderText = "bit" depth.Text = "16" depth.TextColor3 = Color3.fromRGB(255, 255, 255) depth.TextSize = 11 depth.TextWrapped = true depth.AnchorPoint = Vector2.new(0.5, 0.5) depth.BackgroundColor3 = Color3.fromRGB(40, 50, 56) depth.BorderColor3 = Color3.fromRGB(0, 0, 0) depth.BorderSizePixel = 0 depth.Position = UDim2.fromScale(0.429, -1.25) depth.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding1 = Instance.new("UIPadding") uIPadding1.Name = "UIPadding" uIPadding1.PaddingBottom = UDim.new(0, 4) uIPadding1.PaddingLeft = UDim.new(0, 8) uIPadding1.PaddingRight = UDim.new(0, 8) uIPadding1.PaddingTop = UDim.new(0, 4) uIPadding1.Parent = depth local uICorner1 = Instance.new("UICorner") uICorner1.Name = "UICorner" uICorner1.CornerRadius = UDim.new(1, 0) uICorner1.Parent = depth depth.Parent = input local size = Instance.new("TextBox") size.Name = "size" size.ClearTextOnFocus = false size.CursorPosition = -1 size.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) size.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) size.PlaceholderText = "size" size.Text = "0.15" size.TextColor3 = Color3.fromRGB(255, 255, 255) size.TextSize = 11 size.TextWrapped = true size.AnchorPoint = Vector2.new(0.5, 0.5) size.BackgroundColor3 = Color3.fromRGB(40, 50, 56) size.BorderColor3 = Color3.fromRGB(0, 0, 0) size.BorderSizePixel = 0 size.Position = UDim2.fromScale(0.615, -1.25) size.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding2 = Instance.new("UIPadding") uIPadding2.Name = "UIPadding" uIPadding2.PaddingBottom = UDim.new(0, 4) uIPadding2.PaddingLeft = UDim.new(0, 8) uIPadding2.PaddingRight = UDim.new(0, 8) uIPadding2.PaddingTop = UDim.new(0, 4) uIPadding2.Parent = size local uICorner2 = Instance.new("UICorner") uICorner2.Name = "UICorner" uICorner2.CornerRadius = UDim.new(1, 0) uICorner2.Parent = size size.Parent = input local width = Instance.new("TextBox") width.Name = "width" width.ClearTextOnFocus = false width.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) width.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) width.PlaceholderText = "width" width.Text = "" width.TextColor3 = Color3.fromRGB(255, 255, 255) width.TextSize = 11 width.TextWrapped = true width.AnchorPoint = Vector2.new(0.5, 0.5) width.BackgroundColor3 = Color3.fromRGB(40, 50, 56) width.BorderColor3 = Color3.fromRGB(0, 0, 0) width.BorderSizePixel = 0 width.Position = UDim2.fromScale(0.0592, -1.25) width.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding3 = Instance.new("UIPadding") uIPadding3.Name = "UIPadding" uIPadding3.PaddingBottom = UDim.new(0, 4) uIPadding3.PaddingLeft = UDim.new(0, 8) uIPadding3.PaddingRight = UDim.new(0, 8) uIPadding3.PaddingTop = UDim.new(0, 4) uIPadding3.Parent = width local uICorner3 = Instance.new("UICorner") uICorner3.Name = "UICorner" uICorner3.CornerRadius = UDim.new(1, 0) uICorner3.Parent = width width.Parent = input local height = Instance.new("TextBox") height.Name = "height" height.ClearTextOnFocus = false height.CursorPosition = -1 height.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) height.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) height.PlaceholderText = "height" height.Text = "240" height.TextColor3 = Color3.fromRGB(255, 255, 255) height.TextSize = 11 height.TextWrapped = true height.AnchorPoint = Vector2.new(0.5, 0.5) height.BackgroundColor3 = Color3.fromRGB(40, 50, 56) height.BorderColor3 = Color3.fromRGB(0, 0, 0) height.BorderSizePixel = 0 height.Position = UDim2.fromScale(0.243, -1.25) height.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding4 = Instance.new("UIPadding") uIPadding4.Name = "UIPadding" uIPadding4.PaddingBottom = UDim.new(0, 4) uIPadding4.PaddingLeft = UDim.new(0, 8) uIPadding4.PaddingRight = UDim.new(0, 8) uIPadding4.PaddingTop = UDim.new(0, 4) uIPadding4.Parent = height local uICorner4 = Instance.new("UICorner") uICorner4.Name = "UICorner" uICorner4.CornerRadius = UDim.new(1, 0) uICorner4.Parent = height height.Parent = input input.Parent = gui local draw = Instance.new("TextButton") draw.Name = "draw" draw.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) draw.Text = "draw" draw.TextColor3 = Color3.fromRGB(255, 255, 255) draw.TextSize = 12 draw.TextWrapped = true draw.AnchorPoint = Vector2.new(0.5, 0.5) draw.BackgroundColor3 = Color3.fromRGB(40, 50, 56) draw.BorderColor3 = Color3.fromRGB(0, 0, 0) draw.BorderSizePixel = 0 draw.Position = UDim2.fromScale(0.587, 0.8) draw.Size = UDim2.new(0.04, 0, 0, 24) local uIPadding5 = Instance.new("UIPadding") uIPadding5.Name = "UIPadding" uIPadding5.PaddingBottom = UDim.new(0, 4) uIPadding5.PaddingLeft = UDim.new(0, 8) uIPadding5.PaddingRight = UDim.new(0, 8) uIPadding5.PaddingTop = UDim.new(0, 4) uIPadding5.Parent = draw local uICorner5 = Instance.new("UICorner") uICorner5.Name = "UICorner" uICorner5.CornerRadius = UDim.new(1, 0) uICorner5.Parent = draw draw.Parent = gui local clear = Instance.new("TextButton") clear.Name = "clear" clear.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) clear.Text = "clear" clear.TextColor3 = Color3.fromRGB(255, 255, 255) clear.TextSize = 12 clear.TextWrapped = true clear.AnchorPoint = Vector2.new(0.5, 0.5) clear.BackgroundColor3 = Color3.fromRGB(40, 50, 56) clear.BorderColor3 = Color3.fromRGB(0, 0, 0) clear.BorderSizePixel = 0 clear.Position = UDim2.fromScale(0.633, 0.8) clear.Size = UDim2.new(0.04, 0, 0, 24) local uIPadding6 = Instance.new("UIPadding") uIPadding6.Name = "UIPadding" uIPadding6.PaddingBottom = UDim.new(0, 4) uIPadding6.PaddingLeft = UDim.new(0, 8) uIPadding6.PaddingRight = UDim.new(0, 8) uIPadding6.PaddingTop = UDim.new(0, 4) uIPadding6.Parent = clear local uICorner6 = Instance.new("UICorner") uICorner6.Name = "UICorner" uICorner6.CornerRadius = UDim.new(1, 0) uICorner6.Parent = clear clear.Parent = gui gui.Parent = script local remote = ... clear.MouseButton1Down:Connect(function() remote:FireServer("clear") end) draw.MouseButton1Down:Connect(function() remote:FireServer(input.Text, tonumber(width.Text), tonumber(height.Text), tonumber(depth.Text), tonumber(size.Text)) end)]], owner.PlayerGui, remote) local loaded = {} remote.OnServerEvent:Connect(function(sender, url, width, height, depth, size) if sender ~= owner then return warn("bad owner") end if url == "clear" then local model = table.remove(loaded, #loaded) model:Destroy() return end if not url then return end local response = process({ { url = url, height = height, width = width, colorDepth = depth, } }) if response.Success then local body = HttpService:JSONDecode(response.Body) local selected = body[1] if selected.status == 200 then table.insert(loaded, draw(script, size or 0.15, owner.Character.Head.CFrame, selected.data)) else warn(selected.status .. " " .. selected.data) end else error(response.StatusCode .. " " .. response.StatusMessage) end end)
local HttpService = game:GetService("HttpService") local MRMF = loadstring(HttpService:GetAsync("https://sbin.wya.rip/lib/MRMF.luau"))() function process(images) local response = HttpService:RequestAsync({ Url = "https://sbin.wya.rip/image-processing/mrmf", Method = "POST", Body = HttpService:JSONEncode(images), Headers = { ["Content-Type"] = "application/json" } }) return response end function draw(parent, pixelsize, cframe, response) local image = MRMF(response.buffer, true) local pixelarray = image.frames[1] local holder = Instance.new("WorldModel") holder.Parent = parent local parts = 0 local part = Instance.new("Part") part.CanQuery = false part.CanTouch = false part.CanCollide = false part.CastShadow = false part.Material = Enum.Material.Air part.Name = "Base" part.Locked = true part.Size = Vector3.new(1, 0, 1) * pixelsize local function plot(x, y, width, height, color, alpha) if alpha <= 0.03 then return end local new = part:Clone() new.Archivable = false new.Size = Vector3.new(pixelsize * width, pixelsize, pixelsize * height) new.Color = color new.Transparency = 0.5--1 - alpha new.CFrame = cframe * CFrame.new(-pixelsize * image.width * 0.5, 0, -pixelsize * image.height * 0.5) * CFrame.new(pixelsize * (x - 1 + (width - 1) * 0.5), 0, pixelsize * (y - 1 + (height - 1) * 0.5)) new.Parent = holder parts += 1 if parts % 300 == 0 then task.wait() end end local function getColor(x, y) local pos = (y - 1) * image.width * 4 + (x - 1) * 4 + 1 local r, g, b, a = pixelarray[pos], pixelarray[pos + 1], pixelarray[pos + 2], pixelarray[pos + 3] return r, g, b, a end local function isRegionUniform(x1, y1, x2, y2) local r1, g1, b1, a1 = getColor(x1, y1) local threshold = 0.045 for y = y1, y2 do for x = x1, x2 do local r2, g2, b2, a2 = getColor(x, y) if math.abs(r1 - r2) >= threshold or math.abs(g1 - g2) >= threshold or math.abs(b1 - b2) >= threshold or math.abs(a1 - a2) >= threshold then return false end r1 = r1 + (r2 - r1) * 0.5 g1 = g1 + (g2 - g1) * 0.5 b1 = b1 + (b2 - b1) * 0.5 end end return true, Color3.new(r1, g1, b1), a1 end local function quadtree(x1, y1, x2, y2) if x1 > x2 or y1 > y2 then return end local uniform, color, alpha = isRegionUniform(x1, y1, x2, y2) if uniform then plot(x1, y1, x2 - x1 + 1, y2 - y1 + 1, color, alpha) else local midX = math.floor((x1 + x2) / 2) local midY = math.floor((y1 + y2) / 2) quadtree(x1, y1, midX, midY) quadtree(midX + 1, y1, x2, midY) quadtree(x1, midY + 1, midX, y2) quadtree(midX + 1, midY + 1, x2, y2) end end quadtree(1, 1, image.width, image.height) return holder end local remote = Instance.new("RemoteEvent", script) NLS([[local gui = Instance.new("ScreenGui") gui.Name = "gui" gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling local input = Instance.new("TextBox") input.Name = "input" input.ClearTextOnFocus = false input.CursorPosition = -1 input.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) input.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) input.PlaceholderText = "input image url here..." input.Text = "" input.TextColor3 = Color3.fromRGB(255, 255, 255) input.TextSize = 12 input.TextWrapped = true input.TextXAlignment = Enum.TextXAlignment.Left input.AnchorPoint = Vector2.new(0.5, 0.5) input.BackgroundColor3 = Color3.fromRGB(40, 50, 56) input.BorderColor3 = Color3.fromRGB(0, 0, 0) input.BorderSizePixel = 0 input.Position = UDim2.fromScale(0.455, 0.8) input.Size = UDim2.new(0.21, 0, 0, 24) local uIPadding = Instance.new("UIPadding") uIPadding.Name = "UIPadding" uIPadding.PaddingBottom = UDim.new(0, 4) uIPadding.PaddingLeft = UDim.new(0, 8) uIPadding.PaddingRight = UDim.new(0, 8) uIPadding.PaddingTop = UDim.new(0, 4) uIPadding.Parent = input local uICorner = Instance.new("UICorner") uICorner.Name = "UICorner" uICorner.CornerRadius = UDim.new(1, 0) uICorner.Parent = input local depth = Instance.new("TextBox") depth.Name = "depth" depth.ClearTextOnFocus = false depth.CursorPosition = -1 depth.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) depth.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) depth.PlaceholderText = "bit" depth.Text = "16" depth.TextColor3 = Color3.fromRGB(255, 255, 255) depth.TextSize = 11 depth.TextWrapped = true depth.AnchorPoint = Vector2.new(0.5, 0.5) depth.BackgroundColor3 = Color3.fromRGB(40, 50, 56) depth.BorderColor3 = Color3.fromRGB(0, 0, 0) depth.BorderSizePixel = 0 depth.Position = UDim2.fromScale(0.429, -1.25) depth.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding1 = Instance.new("UIPadding") uIPadding1.Name = "UIPadding" uIPadding1.PaddingBottom = UDim.new(0, 4) uIPadding1.PaddingLeft = UDim.new(0, 8) uIPadding1.PaddingRight = UDim.new(0, 8) uIPadding1.PaddingTop = UDim.new(0, 4) uIPadding1.Parent = depth local uICorner1 = Instance.new("UICorner") uICorner1.Name = "UICorner" uICorner1.CornerRadius = UDim.new(1, 0) uICorner1.Parent = depth depth.Parent = input local size = Instance.new("TextBox") size.Name = "size" size.ClearTextOnFocus = false size.CursorPosition = -1 size.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) size.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) size.PlaceholderText = "size" size.Text = "0.15" size.TextColor3 = Color3.fromRGB(255, 255, 255) size.TextSize = 11 size.TextWrapped = true size.AnchorPoint = Vector2.new(0.5, 0.5) size.BackgroundColor3 = Color3.fromRGB(40, 50, 56) size.BorderColor3 = Color3.fromRGB(0, 0, 0) size.BorderSizePixel = 0 size.Position = UDim2.fromScale(0.615, -1.25) size.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding2 = Instance.new("UIPadding") uIPadding2.Name = "UIPadding" uIPadding2.PaddingBottom = UDim.new(0, 4) uIPadding2.PaddingLeft = UDim.new(0, 8) uIPadding2.PaddingRight = UDim.new(0, 8) uIPadding2.PaddingTop = UDim.new(0, 4) uIPadding2.Parent = size local uICorner2 = Instance.new("UICorner") uICorner2.Name = "UICorner" uICorner2.CornerRadius = UDim.new(1, 0) uICorner2.Parent = size size.Parent = input local width = Instance.new("TextBox") width.Name = "width" width.ClearTextOnFocus = false width.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) width.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) width.PlaceholderText = "width" width.Text = "" width.TextColor3 = Color3.fromRGB(255, 255, 255) width.TextSize = 11 width.TextWrapped = true width.AnchorPoint = Vector2.new(0.5, 0.5) width.BackgroundColor3 = Color3.fromRGB(40, 50, 56) width.BorderColor3 = Color3.fromRGB(0, 0, 0) width.BorderSizePixel = 0 width.Position = UDim2.fromScale(0.0592, -1.25) width.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding3 = Instance.new("UIPadding") uIPadding3.Name = "UIPadding" uIPadding3.PaddingBottom = UDim.new(0, 4) uIPadding3.PaddingLeft = UDim.new(0, 8) uIPadding3.PaddingRight = UDim.new(0, 8) uIPadding3.PaddingTop = UDim.new(0, 4) uIPadding3.Parent = width local uICorner3 = Instance.new("UICorner") uICorner3.Name = "UICorner" uICorner3.CornerRadius = UDim.new(1, 0) uICorner3.Parent = width width.Parent = input local height = Instance.new("TextBox") height.Name = "height" height.ClearTextOnFocus = false height.CursorPosition = -1 height.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) height.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) height.PlaceholderText = "height" height.Text = "240" height.TextColor3 = Color3.fromRGB(255, 255, 255) height.TextSize = 11 height.TextWrapped = true height.AnchorPoint = Vector2.new(0.5, 0.5) height.BackgroundColor3 = Color3.fromRGB(40, 50, 56) height.BorderColor3 = Color3.fromRGB(0, 0, 0) height.BorderSizePixel = 0 height.Position = UDim2.fromScale(0.243, -1.25) height.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding4 = Instance.new("UIPadding") uIPadding4.Name = "UIPadding" uIPadding4.PaddingBottom = UDim.new(0, 4) uIPadding4.PaddingLeft = UDim.new(0, 8) uIPadding4.PaddingRight = UDim.new(0, 8) uIPadding4.PaddingTop = UDim.new(0, 4) uIPadding4.Parent = height local uICorner4 = Instance.new("UICorner") uICorner4.Name = "UICorner" uICorner4.CornerRadius = UDim.new(1, 0) uICorner4.Parent = height height.Parent = input input.Parent = gui local draw = Instance.new("TextButton") draw.Name = "draw" draw.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) draw.Text = "draw" draw.TextColor3 = Color3.fromRGB(255, 255, 255) draw.TextSize = 12 draw.TextWrapped = true draw.AnchorPoint = Vector2.new(0.5, 0.5) draw.BackgroundColor3 = Color3.fromRGB(40, 50, 56) draw.BorderColor3 = Color3.fromRGB(0, 0, 0) draw.BorderSizePixel = 0 draw.Position = UDim2.fromScale(0.587, 0.8) draw.Size = UDim2.new(0.04, 0, 0, 24) local uIPadding5 = Instance.new("UIPadding") uIPadding5.Name = "UIPadding" uIPadding5.PaddingBottom = UDim.new(0, 4) uIPadding5.PaddingLeft = UDim.new(0, 8) uIPadding5.PaddingRight = UDim.new(0, 8) uIPadding5.PaddingTop = UDim.new(0, 4) uIPadding5.Parent = draw local uICorner5 = Instance.new("UICorner") uICorner5.Name = "UICorner" uICorner5.CornerRadius = UDim.new(1, 0) uICorner5.Parent = draw draw.Parent = gui local clear = Instance.new("TextButton") clear.Name = "clear" clear.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) clear.Text = "clear" clear.TextColor3 = Color3.fromRGB(255, 255, 255) clear.TextSize = 12 clear.TextWrapped = true clear.AnchorPoint = Vector2.new(0.5, 0.5) clear.BackgroundColor3 = Color3.fromRGB(40, 50, 56) clear.BorderColor3 = Color3.fromRGB(0, 0, 0) clear.BorderSizePixel = 0 clear.Position = UDim2.fromScale(0.633, 0.8) clear.Size = UDim2.new(0.04, 0, 0, 24) local uIPadding6 = Instance.new("UIPadding") uIPadding6.Name = "UIPadding" uIPadding6.PaddingBottom = UDim.new(0, 4) uIPadding6.PaddingLeft = UDim.new(0, 8) uIPadding6.PaddingRight = UDim.new(0, 8) uIPadding6.PaddingTop = UDim.new(0, 4) uIPadding6.Parent = clear local uICorner6 = Instance.new("UICorner") uICorner6.Name = "UICorner" uICorner6.CornerRadius = UDim.new(1, 0) uICorner6.Parent = clear clear.Parent = gui gui.Parent = script local remote = ... clear.MouseButton1Down:Connect(function() remote:FireServer("clear") end) draw.MouseButton1Down:Connect(function() remote:FireServer(input.Text, tonumber(width.Text), tonumber(height.Text), tonumber(depth.Text), tonumber(size.Text)) end)]], owner.PlayerGui, remote) local loaded = {} remote.OnServerEvent:Connect(function(sender, url, width, height, depth, size) if sender ~= owner then return warn("bad owner") end if url == "clear" then local model = table.remove(loaded, #loaded) model:Destroy() return end if not url then return end local response = process({ { url = url, height = height, width = width, colorDepth = depth, } }) if response.Success then local body = HttpService:JSONDecode(response.Body) local selected = body[1] if selected.status == 200 then table.insert(loaded, draw(script, size or 0.15, owner.Character.Head.CFrame, selected.data)) else warn(selected.status .. " " .. selected.data) end else error(response.StatusCode .. " " .. response.StatusMessage) end end)
local HttpService = game:GetService("HttpService") local MRMF = loadstring(HttpService:GetAsync("https://sbin.wya.rip/lib/MRMF.luau"))() function process(images) local response = HttpService:RequestAsync({ Url = "https://sbin.wya.rip/image-processing/mrmf", Method = "POST", Body = HttpService:JSONEncode(images), Headers = { ["Content-Type"] = "application/json" } }) return response end function draw(parent, pixelsize, cframe, response) local image = MRMF(response.buffer, true) local pixelarray = image.frames[1] local holder = Instance.new("WorldModel") holder.Parent = parent local pixelsize = 1 -- Assuming this is defined elsewhere in your code local parts = 0 local part = Instance.new("Part") part.CanQuery = false part.CanTouch = false part.CanCollide = false part.CastShadow = false part.Material = Enum.Material.Air part.Name = "Base" part.Locked = true part.Size = Vector3.new(1, 0, 1) * pixelsize local function plot(x, y, width, height, color) local new = part:Clone() new.Archivable = false new.Size = Vector3.new(pixelsize * width, pixelsize, pixelsize * height) new.Color = color new.Transparency = 0.5 new.CFrame = cframe * CFrame.new(-pixelsize * image.width * 0.5, 0, -pixelsize * image.height * 0.5) * CFrame.new(pixelsize * (x - 1 + (width - 1) * 0.5), 0, pixelsize * (y - 1 + (height - 1) * 0.5)) new.Parent = holder parts += 1 if parts % 300 == 0 then task.wait() end end local visited = {} local function getColor(x, y) local pos = (y - 1) * image.width * 4 + (x - 1) * 4 + 1 local r, g, b, a = pixelarray[pos], pixelarray[pos + 1], pixelarray[pos + 2], pixelarray[pos + 3] return Color3.new(r * a, g * a, b * a), r, g, b, a end local function similarColor(r1, g1, b1, a1, r2, g2, b2, a2) local threshold = 0.01 -- Define your threshold for color similarity return math.abs(r1 - r2) < threshold and math.abs(g1 - g2) < threshold and math.abs(b1 - b2) < threshold and math.abs(a1 - a2) < threshold end for y = 1, image.height do for x = 1, image.width do if not visited[y] then visited[y] = {} end if not visited[y][x] then local color, r, g, b, a = getColor(x, y) -- Greedy mesh: find width and height of the block local width = 1 local height = 1 -- Find horizontal width first while (x + width <= image.width) and not visited[y][x + width] do local _, r2, g2, b2, a2 = getColor(x + width, y) if similarColor(r, g, b, a, r2, g2, b2, a2) then width += 1 else break end end -- Find vertical height by checking for matching blocks of width local stop = false while (y + height <= image.height) and not stop do for i = 0, width - 1 do local _, r2, g2, b2, a2 = getColor(x + i, y + height) if visited[y + height] and visited[y + height][x + i] then stop = true break end if not similarColor(r, g, b, a, r2, g2, b2, a2) then stop = true break end end if not stop then height += 1 end end -- Mark the whole block as visited for iy = 0, height - 1 do if not visited[y + iy] then visited[y + iy] = {} end for ix = 0, width - 1 do visited[y + iy][x + ix] = true end end -- Create a part for the block of similar pixels plot(x, y, width, height, color) end end end return holder end local remote = Instance.new("RemoteEvent", script) NLS([[local gui = Instance.new("ScreenGui") gui.Name = "gui" gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling local input = Instance.new("TextBox") input.Name = "input" input.ClearTextOnFocus = false input.CursorPosition = -1 input.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) input.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) input.PlaceholderText = "input image url here..." input.Text = "" input.TextColor3 = Color3.fromRGB(255, 255, 255) input.TextSize = 12 input.TextWrapped = true input.TextXAlignment = Enum.TextXAlignment.Left input.AnchorPoint = Vector2.new(0.5, 0.5) input.BackgroundColor3 = Color3.fromRGB(40, 50, 56) input.BorderColor3 = Color3.fromRGB(0, 0, 0) input.BorderSizePixel = 0 input.Position = UDim2.fromScale(0.455, 0.8) input.Size = UDim2.new(0.21, 0, 0, 24) local uIPadding = Instance.new("UIPadding") uIPadding.Name = "UIPadding" uIPadding.PaddingBottom = UDim.new(0, 4) uIPadding.PaddingLeft = UDim.new(0, 8) uIPadding.PaddingRight = UDim.new(0, 8) uIPadding.PaddingTop = UDim.new(0, 4) uIPadding.Parent = input local uICorner = Instance.new("UICorner") uICorner.Name = "UICorner" uICorner.CornerRadius = UDim.new(1, 0) uICorner.Parent = input local depth = Instance.new("TextBox") depth.Name = "depth" depth.ClearTextOnFocus = false depth.CursorPosition = -1 depth.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) depth.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) depth.PlaceholderText = "bit" depth.Text = "16" depth.TextColor3 = Color3.fromRGB(255, 255, 255) depth.TextSize = 11 depth.TextWrapped = true depth.AnchorPoint = Vector2.new(0.5, 0.5) depth.BackgroundColor3 = Color3.fromRGB(40, 50, 56) depth.BorderColor3 = Color3.fromRGB(0, 0, 0) depth.BorderSizePixel = 0 depth.Position = UDim2.fromScale(0.429, -1.25) depth.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding1 = Instance.new("UIPadding") uIPadding1.Name = "UIPadding" uIPadding1.PaddingBottom = UDim.new(0, 4) uIPadding1.PaddingLeft = UDim.new(0, 8) uIPadding1.PaddingRight = UDim.new(0, 8) uIPadding1.PaddingTop = UDim.new(0, 4) uIPadding1.Parent = depth local uICorner1 = Instance.new("UICorner") uICorner1.Name = "UICorner" uICorner1.CornerRadius = UDim.new(1, 0) uICorner1.Parent = depth depth.Parent = input local size = Instance.new("TextBox") size.Name = "size" size.ClearTextOnFocus = false size.CursorPosition = -1 size.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) size.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) size.PlaceholderText = "size" size.Text = "0.15" size.TextColor3 = Color3.fromRGB(255, 255, 255) size.TextSize = 11 size.TextWrapped = true size.AnchorPoint = Vector2.new(0.5, 0.5) size.BackgroundColor3 = Color3.fromRGB(40, 50, 56) size.BorderColor3 = Color3.fromRGB(0, 0, 0) size.BorderSizePixel = 0 size.Position = UDim2.fromScale(0.615, -1.25) size.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding2 = Instance.new("UIPadding") uIPadding2.Name = "UIPadding" uIPadding2.PaddingBottom = UDim.new(0, 4) uIPadding2.PaddingLeft = UDim.new(0, 8) uIPadding2.PaddingRight = UDim.new(0, 8) uIPadding2.PaddingTop = UDim.new(0, 4) uIPadding2.Parent = size local uICorner2 = Instance.new("UICorner") uICorner2.Name = "UICorner" uICorner2.CornerRadius = UDim.new(1, 0) uICorner2.Parent = size size.Parent = input local width = Instance.new("TextBox") width.Name = "width" width.ClearTextOnFocus = false width.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) width.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) width.PlaceholderText = "width" width.Text = "" width.TextColor3 = Color3.fromRGB(255, 255, 255) width.TextSize = 11 width.TextWrapped = true width.AnchorPoint = Vector2.new(0.5, 0.5) width.BackgroundColor3 = Color3.fromRGB(40, 50, 56) width.BorderColor3 = Color3.fromRGB(0, 0, 0) width.BorderSizePixel = 0 width.Position = UDim2.fromScale(0.0592, -1.25) width.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding3 = Instance.new("UIPadding") uIPadding3.Name = "UIPadding" uIPadding3.PaddingBottom = UDim.new(0, 4) uIPadding3.PaddingLeft = UDim.new(0, 8) uIPadding3.PaddingRight = UDim.new(0, 8) uIPadding3.PaddingTop = UDim.new(0, 4) uIPadding3.Parent = width local uICorner3 = Instance.new("UICorner") uICorner3.Name = "UICorner" uICorner3.CornerRadius = UDim.new(1, 0) uICorner3.Parent = width width.Parent = input local height = Instance.new("TextBox") height.Name = "height" height.ClearTextOnFocus = false height.CursorPosition = -1 height.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) height.PlaceholderColor3 = Color3.fromRGB(172, 172, 172) height.PlaceholderText = "height" height.Text = "240" height.TextColor3 = Color3.fromRGB(255, 255, 255) height.TextSize = 11 height.TextWrapped = true height.AnchorPoint = Vector2.new(0.5, 0.5) height.BackgroundColor3 = Color3.fromRGB(40, 50, 56) height.BorderColor3 = Color3.fromRGB(0, 0, 0) height.BorderSizePixel = 0 height.Position = UDim2.fromScale(0.243, -1.25) height.Size = UDim2.new(0.166, 0, -0.385, 24) local uIPadding4 = Instance.new("UIPadding") uIPadding4.Name = "UIPadding" uIPadding4.PaddingBottom = UDim.new(0, 4) uIPadding4.PaddingLeft = UDim.new(0, 8) uIPadding4.PaddingRight = UDim.new(0, 8) uIPadding4.PaddingTop = UDim.new(0, 4) uIPadding4.Parent = height local uICorner4 = Instance.new("UICorner") uICorner4.Name = "UICorner" uICorner4.CornerRadius = UDim.new(1, 0) uICorner4.Parent = height height.Parent = input input.Parent = gui local draw = Instance.new("TextButton") draw.Name = "draw" draw.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) draw.Text = "draw" draw.TextColor3 = Color3.fromRGB(255, 255, 255) draw.TextSize = 12 draw.TextWrapped = true draw.AnchorPoint = Vector2.new(0.5, 0.5) draw.BackgroundColor3 = Color3.fromRGB(40, 50, 56) draw.BorderColor3 = Color3.fromRGB(0, 0, 0) draw.BorderSizePixel = 0 draw.Position = UDim2.fromScale(0.587, 0.8) draw.Size = UDim2.new(0.04, 0, 0, 24) local uIPadding5 = Instance.new("UIPadding") uIPadding5.Name = "UIPadding" uIPadding5.PaddingBottom = UDim.new(0, 4) uIPadding5.PaddingLeft = UDim.new(0, 8) uIPadding5.PaddingRight = UDim.new(0, 8) uIPadding5.PaddingTop = UDim.new(0, 4) uIPadding5.Parent = draw local uICorner5 = Instance.new("UICorner") uICorner5.Name = "UICorner" uICorner5.CornerRadius = UDim.new(1, 0) uICorner5.Parent = draw draw.Parent = gui local clear = Instance.new("TextButton") clear.Name = "clear" clear.FontFace = Font.new( "rbxassetid://11702779517", Enum.FontWeight.Bold, Enum.FontStyle.Normal ) clear.Text = "clear" clear.TextColor3 = Color3.fromRGB(255, 255, 255) clear.TextSize = 12 clear.TextWrapped = true clear.AnchorPoint = Vector2.new(0.5, 0.5) clear.BackgroundColor3 = Color3.fromRGB(40, 50, 56) clear.BorderColor3 = Color3.fromRGB(0, 0, 0) clear.BorderSizePixel = 0 clear.Position = UDim2.fromScale(0.633, 0.8) clear.Size = UDim2.new(0.04, 0, 0, 24) local uIPadding6 = Instance.new("UIPadding") uIPadding6.Name = "UIPadding" uIPadding6.PaddingBottom = UDim.new(0, 4) uIPadding6.PaddingLeft = UDim.new(0, 8) uIPadding6.PaddingRight = UDim.new(0, 8) uIPadding6.PaddingTop = UDim.new(0, 4) uIPadding6.Parent = clear local uICorner6 = Instance.new("UICorner") uICorner6.Name = "UICorner" uICorner6.CornerRadius = UDim.new(1, 0) uICorner6.Parent = clear clear.Parent = gui gui.Parent = script local remote = ... clear.MouseButton1Down:Connect(function() remote:FireServer("clear") end) draw.MouseButton1Down:Connect(function() remote:FireServer(input.Text, tonumber(width.Text), tonumber(height.Text), tonumber(depth.Text), tonumber(size.Text)) end)]], owner.PlayerGui, remote) local loaded = {} remote.OnServerEvent:Connect(function(sender, url, width, height, depth, size) if sender ~= owner then return warn("bad owner") end if url == "clear" then local model = table.remove(loaded, #loaded) model:Destroy() return end if not url then return end local response = process({ { url = url, height = height, width = width, colorDepth = depth, } }) if response.Success then local body = HttpService:JSONDecode(response.Body) local selected = body[1] if selected.status == 200 then table.insert(loaded, draw(script, size or 0.15, owner.Character.Head.CFrame, selected.data)) else warn(selected.status .. " " .. selected.data) end else error(response.StatusCode .. " " .. response.StatusMessage) end end)
Editor Settings
Theme
Key bindings
Full width
Lines