Gem Version Build Status

image_size

Measure image size using pure Ruby. Formats: apng, bmp, cur, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm.

Installation

gem install image_size

Bundler

Add to your Gemfile:

gem 'image_size', '~> 3.0'

Usage

image_size = ImageSize.path('spec/images/jpeg/436x429.jpeg')

image_size.format       #=> :jpec
image_size.width        #=> 436
image_size.height       #=> 429
image_size.w            #=> 436
image_size.h            #=> 429
image_size.size         #=> [436, 429]
image_size.size.to_s    #=> "436x429"
"#{image_size.size}"    #=> "436x429"
image_size.size.width   #=> 436
image_size.size.height  #=> 429
image_size.size.w       #=> 436
image_size.size.h       #=> 429

Or using IO object:

image_size = File.open('spec/images/jpeg/436x429.jpeg', 'rb'){ |fh| ImageSize.new(fh) }

Any object responding to read and eof?:

require 'image_size'

image_size = ImageSize.new(ARGF)

Works with open-uri if needed:

require 'image_size'
require 'open-uri'

image_size = URI.parse('http://www.rubycgi.org/image/ruby_gtk_book_title.jpg').open('rb') do |fh|
  ImageSize.new(fh)
end

image_size = open('http://www.rubycgi.org/image/ruby_gtk_book_title.jpg', 'rb') do |fh|
  ImageSize.new(fh)
end

Note that starting with version 2.0.0 the object given to ImageSize will not be rewound before or after use. So rewind if needed before passing to ImageSize and/or rewind after passing to ImageSize before reading data.

require 'image_size'

File.open('spec/images/jpeg/436x429.jpeg', 'rb') do |fh|
  image_size = ImageSize.new(fh)

  fh.rewind
  data = fh.read
end

File.open('spec/images/jpeg/436x429.jpeg', 'rb') do |fh|
  data = fh.read
  fh.rewind

  image_size = ImageSize.new(fh)
end

Licence

This code is free to use under the terms of the Ruby's licence.

Original author: Keisuke Minami [email protected].\ Further development 2010-2022 Ivan Kuchin https://github.com/toy/image_size