58 lines
1.4 KiB
Lua
58 lines
1.4 KiB
Lua
local cairo = require'cairo' --used to open the file
|
|
local bitmap = require'bitmap' --used to read its content
|
|
|
|
function int_hex(nb)
|
|
if nb < 16 then add = "0"
|
|
else add = "" end
|
|
return [[\x]]..add..string.format("%x", nb)
|
|
end
|
|
|
|
file = io.open("output.py", "w")
|
|
first = true
|
|
pallet = {} --will store colors
|
|
pallet_last = 1
|
|
|
|
file:write([[from draw import *
|
|
]])
|
|
|
|
for i = 1, 12, 1 do
|
|
print(i)
|
|
do --open image
|
|
path = "spongebob/resized_cropped_out-"
|
|
if i < 10 then path = path.."0" end
|
|
path = path..i.."0.png"
|
|
local image = cairo.load_png(path)
|
|
image_infos = {width = image:width(), height = image:height()}
|
|
image_bitmap = image:bitmap()
|
|
end
|
|
local getpixel, setpixel = bitmap.pixel_interface(image_bitmap)
|
|
|
|
if first then
|
|
file:write("width=", image_infos.width, "\n", [[data=b"]])
|
|
end
|
|
|
|
for j = 1, image_infos.height, 1 do
|
|
for i = 1, image_infos.width, 1 do
|
|
r, g, b = getpixel(i, j)
|
|
if not pallet[r..","..g..","..b] then
|
|
pallet[r..","..g..","..b] = pallet_last
|
|
pallet_last = pallet_last + 1
|
|
end
|
|
file:write(int_hex(pallet[r..","..g..","..b]))
|
|
end
|
|
end
|
|
|
|
--let's write the pallet
|
|
if first then
|
|
file:write("\"\npallet={")
|
|
for i, v in pairs(pallet) do
|
|
file:write(v, ":(", i, "),")
|
|
end
|
|
end
|
|
|
|
file:write("}\ndraw(", 192 - image_infos.width, ",", 96 - image_infos.height)
|
|
file:write(",data,pallet,", image_infos.width, ")")
|
|
end
|
|
|
|
file:close()
|