1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
local perr = require("util").perr
local function load_p1(fname)
local file,err = fs.open(fname,"r")
perr(err,"fs.open")
local imgf = file.readAll()
--print(img)
assert(imgf:sub(1,2) == "P1","only P1 images are supported at the moment")
local width,height, cur = imgf:match("%s*(%d+)%s*(%d+)%s*()",3)
assert(width,"couldn't find image header")
local img=setmetatable({},{__index=function(t,k)
if type(k) ~= "number" then return nil end
local r = {}
rawset(t,k,r)
return r
end})
-- img[y][x]. 1,1 is top left
for row=1,height do
for col =1,width do
local val,ncur = imgf:match("(%d+)%s*()",cur)
cur = ncur
img[row][col] = tonumber(val)
end
end
img.width=width
img.height=height
return img
end
return load_p1
|