Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- CC:Tweaked Image Converter
- -- Converts PNG images to CC:Tweaked compatible formats
- local args = {...}
- if #args < 1 then
- print("CC:Tweaked Image Viewer")
- print("")
- print("Usage: imgview <filename>")
- print("")
- print("Supported formats:")
- print(" .nfp - NFP paint format")
- print(" .ccimg - CC image format")
- print("")
- print("To create images, use the Python")
- print("converter on your PC:")
- print(" python image_converter.py input.png")
- return
- end
- local filename = args[1]
- -- Try different extensions
- local extensions = {"", ".nfp", ".ccimg"}
- local file = nil
- local format = nil
- for _, ext in ipairs(extensions) do
- local path = filename .. ext
- if fs.exists(path) then
- file = fs.open(path, "r")
- if ext == ".nfp" or ext == "" then
- format = "nfp"
- else
- format = "ccimg"
- end
- filename = path
- break
- end
- end
- if not file then
- print("Error: File not found: " .. filename)
- print("Tried: " .. filename .. ", " .. filename .. ".nfp, " .. filename .. ".ccimg")
- return
- end
- local content = file.readAll()
- file.close()
- -- Color character mapping
- local colorChars = {
- ["0"] = colors.white,
- ["1"] = colors.orange,
- ["2"] = colors.magenta,
- ["3"] = colors.lightBlue,
- ["4"] = colors.yellow,
- ["5"] = colors.lime,
- ["6"] = colors.pink,
- ["7"] = colors.gray,
- ["8"] = colors.lightGray,
- ["9"] = colors.cyan,
- ["a"] = colors.purple,
- ["b"] = colors.blue,
- ["c"] = colors.brown,
- ["d"] = colors.green,
- ["e"] = colors.red,
- ["f"] = colors.black,
- }
- -- Parse and display NFP format
- local function displayNFP(content)
- term.setBackgroundColor(colors.black)
- term.clear()
- term.setCursorPos(1, 1)
- local y = 1
- for line in content:gmatch("[^\n]+") do
- term.setCursorPos(1, y)
- for i = 1, #line do
- local char = line:sub(i, i)
- local color = colorChars[char:lower()]
- if color then
- term.setBackgroundColor(color)
- term.write(" ")
- elseif char == " " then
- term.setBackgroundColor(colors.black)
- term.write(" ")
- end
- end
- y = y + 1
- end
- end
- -- Parse and display CCIMG format (custom format with more features)
- local function displayCCIMG(content)
- local data = textutils.unserialize(content)
- if not data then
- print("Error: Invalid .ccimg file")
- return
- end
- term.setBackgroundColor(colors.black)
- term.clear()
- for y, row in ipairs(data.pixels or data) do
- for x, colorChar in ipairs(row) do
- term.setCursorPos(x, y)
- local color = colorChars[colorChar:lower()] or colors.black
- term.setBackgroundColor(color)
- term.write(" ")
- end
- end
- end
- -- Display based on format
- if format == "nfp" then
- displayNFP(content)
- elseif format == "ccimg" then
- displayCCIMG(content)
- end
- -- Wait for key
- term.setCursorPos(1, 1)
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- local w, h = term.getSize()
- term.setCursorPos(1, h)
- term.setBackgroundColor(colors.gray)
- term.write(" Press any key to exit ")
- term.setBackgroundColor(colors.black)
- os.pullEvent("key")
- term.setBackgroundColor(colors.black)
- term.clear()
- term.setCursorPos(1, 1)
Advertisement
Add Comment
Please, Sign In to add comment