local Util = require "imagesize.util"
local MIME_TYPE= "image/png"
local function size (stream, options)
local offset = 12
local length = 4
local ok, err = stream:seek("set", offset)
if not ok then return nil, nil, "error seeking in PNG file: " .. err end
local buf = stream:read(length)
if not buf or buf:len() ~= length then
return nil, nil, "PNG file not big enough to contain header data"
end
if buf == "IHDR" then
length = 8
buf = stream:read(length)
if not buf or buf:len() ~= length then
return nil, nil, "PNG file not big enough to contain header data"
end
return Util.get_uint32_be(buf, 1), Util.get_uint32_be(buf, 5), MIME_TYPE
else
return nil, nil, "can't find header data in PNG file"
end
end
return size