71 lines
1.7 KiB
Lua
Executable File

local args = {...}
local image = args[1]
local unicode = require("unicode")
local module = {}
--------------------------------------------------------------------------------------------------------------
function module.load(path)
local file, reason = io.open(path, "r")
if file then
local picture, pictureWidth, lineCounter = {0, 0}, nil, 0
for line in file:lines() do
local lineLength = unicode.len(line)
if not pictureWidth then
pictureWidth = (lineLength + 1) / 19
picture[1] = pictureWidth
end
for x = 1, lineLength, 19 do
table.insert(picture, tonumber("0x" .. unicode.sub(line, x, x + 5)))
table.insert(picture, tonumber("0x" .. unicode.sub(line, x + 7, x + 12)))
table.insert(picture, tonumber("0x" .. unicode.sub(line, x + 14, x + 15)))
table.insert(picture, unicode.sub(line, x + 17, x + 17))
end
lineCounter = lineCounter + 1
end
picture[2] = lineCounter
file:close()
return picture
else
error("Failed to open file \"" .. tostring(path) .. "\" for reading: " .. tostring(reason))
end
end
function module.save(path, picture, encodingMethod)
local file, reason = io.open(path, "w")
if file then
local x = 1
for i = 3, #picture, 4 do
file:write(
string.format("%06X", picture[i]), " ",
string.format("%06X", picture[i + 1]), " ",
string.format("%02X", picture[i + 2]), " ",
picture[i + 3]
)
x = x + 1
if x > picture[1] then
x = 1
file:write("\n")
else
file:write(" ")
end
end
file:close()
else
error("Failed to open file for writing: " .. tostring(reason))
end
end
--------------------------------------------------------------------------------------------------------------
return module