demo-04-20/demo.lua

169 lines
2.9 KiB
Lua
Raw Normal View History

2020-04-24 14:38:12 +02:00
local cairo = require'cairo' --used to open the file
2020-04-22 13:39:56 +02:00
local bitmap = require'bitmap' --used to read its content
2020-05-02 19:24:52 +02:00
equivalents = {
[32]=" ",
[33]="!",
2020-05-03 10:03:38 +02:00
[34]="\\\"",
2020-05-02 19:24:52 +02:00
[35]="#",
[36]="$",
[37]="%",
[38]="&",
[39]="'",
[40]="(",
[41]=")",
[42]="*",
[43]="+",
[44]=",",
[45]="-",
[46]=".",
[47]="/",
[48]="0",
[49]="1",
[50]="2",
[51]="3",
[52]="4",
[53]="5",
[54]="6",
[55]="7",
[56]="8",
[57]="9",
[58]=":",
[59]=";",
[60]="<",
[61]="=",
[62]=">",
[63]="?",
[64]="@",
[65]="A",
[66]="B",
[67]="C",
[68]="D",
[69]="E",
[70]="F",
[71]="G",
[72]="H",
[73]="I",
[74]="J",
[75]="K",
[76]="L",
[77]="M",
[78]="N",
[79]="O",
[80]="P",
[81]="Q",
[82]="R",
[83]="S",
[84]="T",
[85]="U",
[86]="V",
[87]="W",
[88]="X",
[89]="Y",
[90]="Z",
[91]="[",
2020-05-03 10:03:38 +02:00
[92]="\\\\",
2020-05-02 19:24:52 +02:00
[93]="]",
[94]="^",
[95]="_",
[96]="`",
[97]="a",
[98]="b",
[99]="c",
[100]="d",
[101]="e",
[102]="f",
[103]="g",
[104]="h",
[105]="i",
[106]="j",
[107]="k",
[108]="l",
[109]="m",
[110]="n",
[111]="o",
[112]="p",
[113]="q",
[114]="r",
[115]="s",
[116]="t",
[117]="u",
[118]="v",
[119]="w",
[120]="x",
[121]="y",
[122]="z",
[123]="{",
[124]="|",
[125]="}",
[126]="~"
}
function int_hex(nb)
2020-05-02 19:24:52 +02:00
if equivalents[nb] then return equivalents[nb] end
2020-04-25 13:18:29 +02:00
if nb > 255 then print("uh", nb) end
if nb < 16 then add = "0"
else add = "" end
return [[\x]]..add..string.format("%x", nb)
2020-04-22 18:58:33 +02:00
end
2020-04-27 19:00:34 +02:00
file = io.open("imagination.py", "w")
2020-04-25 10:52:10 +02:00
first = true
pallet = {} --will store colors
2020-04-25 13:18:29 +02:00
pallet_last = 0
mem_pallet_last = 0
2020-04-25 10:52:10 +02:00
file:write([[from draw import *
2020-04-27 19:00:34 +02:00
black=(0,0,0)
for x in range(384):
for y in range(192):
2020-04-28 10:51:27 +02:00
set_pixel(x,y,black)
]])
2020-04-22 18:58:33 +02:00
2020-04-24 14:38:12 +02:00
for i = 1, 12, 1 do
2020-04-25 10:52:10 +02:00
print(i)
2020-04-24 14:38:12 +02:00
do --open image
2020-04-25 10:52:10 +02:00
path = "spongebob/resized_cropped_out-"
2020-04-24 14:38:12 +02:00
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)
2020-04-22 18:58:33 +02:00
2020-04-28 10:51:27 +02:00
file:write("\n", [[data=b"]])
2020-04-25 12:13:57 +02:00
--end
2020-04-24 14:38:12 +02:00
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
2020-04-25 10:52:10 +02:00
file:write(int_hex(pallet[r..","..g..","..b]))
2020-04-22 18:58:33 +02:00
end
end
2020-04-25 12:13:57 +02:00
file:write('"')
2020-04-22 18:58:33 +02:00
2020-04-24 14:38:12 +02:00
--let's write the pallet
2020-04-25 12:13:57 +02:00
if pallet_last > mem_pallet_last then
mem_pallet_last = pallet_last
2020-04-28 10:51:27 +02:00
file:write("\npallet={")
2020-04-25 10:52:10 +02:00
for i, v in pairs(pallet) do
file:write(v, ":(", i, "),")
end
2020-04-25 12:13:57 +02:00
file:write("}")
2020-04-24 14:38:12 +02:00
end
2020-04-28 10:51:27 +02:00
file:write("\ndraw(", math.floor(192 - image_infos.width / 2), ",")
2020-04-25 11:16:34 +02:00
file:write(math.floor(96 - image_infos.height / 2), ",data,pallet,")
file:write(image_infos.width, ")")
2020-04-25 12:13:57 +02:00
first = false
2020-04-24 14:38:12 +02:00
end
file:write('\nwait_ac("Press AC/ON to continue...")')
2020-04-25 10:52:10 +02:00
file:close()