demo-04-20/demo.lua

43 lines
1.0 KiB
Lua

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
io.write([[from draw import *
]])
do --open image
local cairo = require'cairo' --used to open the file
local image = cairo.load_png(arg[1])
image_infos = {width = image:width(), height = image:height()}
image_bitmap = image:bitmap()
end
local getpixel, setpixel = bitmap.pixel_interface(image_bitmap)
pallet = {} --will store colors
pallet_last = 0
io.write("width=", image_infos.width, "\n", [[data=b"]])
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
io.write(int_hex(pallet[r..","..g..","..b]))
end
end
--let's write the pallet
io.write("\"\npallet=(")
for i, _ in pairs(pallet) do
io.write("(", i, "),")
end
io.write(")\ndraw(data,pallet,", image_infos.width, ")")