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