Rubyで画像ファイルの幅と高さを取得するやつをつくった。
対応している形式はjpeg, png, gifの三種類。jpegはもしかすると解析できない場合があるかも。
# public domain def get_imgsize(path, type = :auto) if type == :auto type = File.extname(path)[1..-1].downcase.to_sym type = :jpeg if type == :jpg end File.open(path, "rb") do |f| case type when :jpeg while true break unless f.read(1) == "\xff" case f.read(1) when "\xc0", "\xc2" f.seek(3, IO::SEEK_CUR) return f.read(4).unpack("n2").reverse when "\xd8", "\xd9" when "\x00" break else f.seek(f.read(2).unpack("n")[0] - 2, IO::SEEK_CUR) end end raise RuntimeError, "analysis failed" when :png if f.read(8) == "\x89PNG\r\n\x1a\n" f.seek(8, IO::SEEK_CUR) return f.read(8).unpack("N2") else raise RuntimeError, "analysis failed" end when :gif if f.read(3) == "GIF" f.seek(3, IO::SEEK_CUR) return f.read(4).unpack("v2") else raise RuntimeError, "analysis failed" end else raise ArgumentError, "#{type} is unsupported" end end end width, height = get_imgsize("sample.jpg")