-- Export canvas on love2d -- Reference -- https://love2d.org/forums/viewtopic.php?t=78901&start=10 function love.load() love.graphics.setDefaultFilter("nearest", "nearest") canvas = love.graphics.newCanvas(320, 240) font = love.graphics.newFont(16) req_export = false now_time_str = "" end function love.update(dt) now_time_str = os.date("%Y-%m-%d_%H-%M-%S") end function love.draw() -- set canvas love.graphics.setCanvas(canvas) -- clear canvas love.graphics.clear(0, 0, 0, 0) -- draw text love.graphics.setFont(font) love.graphics.setColor(0, 1, 0, 1) love.graphics.print("FPS: " .. tostring(love.timer.getFPS()), 2, 2) love.graphics.setColor(0, 1, 1, 1) love.graphics.print("SPACE key : Export canvas as png", 2, 20) love.graphics.setColor(1, 1, 0, 1) love.graphics.print(now_time_str, 2, 40) -- unset canvas love.graphics.setCanvas() -- draw canvas to screen love.graphics.setColor(1, 1, 1, 1) love.graphics.draw(canvas) if req_export then req_export = false -- export canvas as png local imagedata = canvas:newImageData() local filedata = imagedata:encode("png") local filename = now_time_str .. ".png" -- write file local filepng = io.open(filename, "wb") if filepng ~= nil then filepng:write(filedata:getString()) filepng:close() end local ty = love.graphics.getHeight() - 40 love.graphics.print("Export !", 2, ty) end end function love.keypressed(key, isrepeat) if key == "escape" then -- ESC key to exit love.event.quit() elseif key == "space" then -- SPACE key to export canvas req_export = true end end