Module:Sandbox/Imagesize

--[[

Imagesize

taks a single unnamed parameter, the filename

returns its dimensions as a string "WIDTHxHEIGHT"

Adaped from the original function in Module:Multiple image

--]]

local p = {}

local function _getdimensions(filename)

if filename:sub(1,5) ~= "File:" then filename = "File:" .. filename end

local titleobj = mw.title.new(mw.uri.decode(mw.ustring.gsub(filename,'%|.*$',''), 'WIKI'))

local fileobj = titleobj and titleobj.file or {width = 0, height = 0}

local w = tonumber(fileobj.width) or 0

local h = tonumber(fileobj.height) or 0

return w, h

end

function p.getDimensions(frame)

local filename = mw.text.trim(frame.args[1] or "")

if filename == "" then return end

local w, h = _getdimensions(filename)

return w .. "x" .. h

end

function p.getHeight(frame)

local filename = mw.text.trim(frame.args[1] or "")

if filename == "" then return end

local w, h = _getdimensions(filename)

return h

end

function p.getWidth(frame)

local filename = mw.text.trim(frame.args[1] or "")

if filename == "" then return end

local w, h = _getdimensions(filename)

return w

end

function p.getScale(frame)

local filename = mw.text.trim(frame.args[1] or "")

if filename == "" then return end

local scale = tonumber(frame.args.scale) or 1

local w, h = _getdimensions(filename)

if (w == 0) or (h == 0) then return end

return scale * w / h

end

return p