Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "gd"
- local base = gd.createFromJpeg("frm/frm9.jpg") --first of the frames exported via ffmpeg -sameq "frm%2d.jpg"
- local sizex, sizey = base:sizeXY()
- local frame = gd.create(sizex, sizey)
- function lum(c)
- local r = base:red(c)
- local g = base:green(c)
- local b = base:blue(c)
- return (r+g+b)/3
- end
- frame:gifAnimBegin("out.gif", false, 0)
- for frm = 1, 40 do
- base = gd.createFromJpeg("frm/frm"..(8+frm)..".jpg")
- local out = gd.createTrueColor(sizex, sizey)
- for x = 1, sizex do
- local startsort = 1
- local sortc = base:getPixel(x, 1)
- local sortw = lum(sortc)
- local sortlist = {{c = sortc, w = sortw}}
- for y = 2, sizey do
- local color = base:getPixel(x, y)
- local w = lum(color)
- if math.abs(w-sortw) > 4*(frm-1) or y == sizey then
- table.sort(sortlist, function(a, b) return a.w < b.w end)
- for ly = 1, #sortlist do
- out:setPixel(x, startsort+ly-1, sortlist[#sortlist-ly+1].c)
- end
- startsort = y
- sortw = w
- sortlist = {{c = color, w = w}}
- else
- table.insert(sortlist, {c = color, w = w})
- end
- end
- end
- frame = out:createPaletteFromTrueColor(true, 50)
- frame:gifAnimAdd("out.gif", true, 0, 0, 8, gd.DISPOSAL_NONE)
- print("frame:", frm)
- end
- gd.gifAnimEnd("out.gif")
Advertisement
Add Comment
Please, Sign In to add comment