class FastImage
Constants
- DefaultTimeout
- LocalFileChunkSize
Attributes
Public Class Methods
# File lib/fastimage.rb, line 180 def initialize(uri, options={}) @uri = uri @options = { :type_only => false, :timeout => DefaultTimeout, :raise_on_failure => false, :proxy => nil, :http_header => {} }.merge(options) @property = @options[:type_only] ? :type : :size if uri.respond_to?(:read) fetch_using_read(uri) elsif uri.start_with?('data:') fetch_using_base64(uri) else begin @parsed_uri = URI.parse(uri) rescue URI::InvalidURIError fetch_using_file_open else if @parsed_uri.scheme == "http" || @parsed_uri.scheme == "https" fetch_using_http else fetch_using_file_open end end end raise SizeNotFound if @options[:raise_on_failure] && @property == :size && !@size rescue Timeout::Error, SocketError, Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ECONNRESET, ImageFetchFailure, Net::HTTPBadResponse, EOFError, Errno::ENOENT raise ImageFetchFailure if @options[:raise_on_failure] rescue NoMethodError # 1.8.7p248 can raise this due to a net/http bug raise ImageFetchFailure if @options[:raise_on_failure] rescue UnknownImageType raise UnknownImageType if @options[:raise_on_failure] rescue CannotParseImage if @options[:raise_on_failure] if @property == :size raise SizeNotFound else raise ImageFetchFailure end end ensure uri.rewind if uri.respond_to?(:rewind) end
Returns an array containing the width and height of the image. It will return nil if the image could not be fetched, or if the image type was not recognised.
By default there is a timeout of 2 seconds for opening and reading from a remote server. This can be changed by passing a :timeout => number_of_seconds in the options.
If you wish FastImage to raise if it cannot size the image for any reason, then pass :raise_on_failure => true in the options.
FastImage knows about GIF, JPEG, BMP, TIFF, ICO, CUR, PNG, PSD, SVG and WEBP files.
Example¶ ↑
require 'fastimage' FastImage.size("http://stephensykes.com/images/ss.com_x.gif") => [266, 56] FastImage.size("http://stephensykes.com/images/pngimage") => [16, 16] FastImage.size("http://farm4.static.flickr.com/3023/3047236863_9dce98b836.jpg") => [500, 375] FastImage.size("http://www-ece.rice.edu/~wakin/images/lena512.bmp") => [512, 512] FastImage.size("test/fixtures/test.jpg") => [882, 470] FastImage.size("http://pennysmalls.com/does_not_exist") => nil FastImage.size("http://pennysmalls.com/does_not_exist", :raise_on_failure=>true) => raises FastImage::ImageFetchFailure FastImage.size("http://stephensykes.com/favicon.ico", :raise_on_failure=>true) => [16, 16] FastImage.size("http://stephensykes.com/images/squareBlue.icns", :raise_on_failure=>true) => raises FastImage::UnknownImageType FastImage.size("http://stephensykes.com/favicon.ico", :raise_on_failure=>true, :timeout=>0.01) => raises FastImage::ImageFetchFailure FastImage.size("http://stephensykes.com/images/faulty.jpg", :raise_on_failure=>true) => raises FastImage::SizeNotFound
Supported options¶ ↑
- :timeout
-
Overrides the default timeout of 2 seconds. Applies both to reading from and opening the http connection.
- :raise_on_failure
-
If set to true causes an exception to be raised if the image size cannot be found for any reason.
# File lib/fastimage.rb, line 134 def self.size(uri, options={}) new(uri, options).size end
Returns an symbol indicating the image type fetched from a uri. It will return nil if the image could not be fetched, or if the image type was not recognised.
By default there is a timeout of 2 seconds for opening and reading from a remote server. This can be changed by passing a :timeout => number_of_seconds in the options.
If you wish FastImage to raise if it cannot find the type of the image for any reason, then pass :raise_on_failure => true in the options.
Example¶ ↑
require 'fastimage' FastImage.type("http://stephensykes.com/images/ss.com_x.gif") => :gif FastImage.type("http://stephensykes.com/images/pngimage") => :png FastImage.type("http://farm4.static.flickr.com/3023/3047236863_9dce98b836.jpg") => :jpeg FastImage.type("http://www-ece.rice.edu/~wakin/images/lena512.bmp") => :bmp FastImage.type("test/fixtures/test.jpg") => :jpeg FastImage.type("http://stephensykes.com/does_not_exist") => nil File.open("/some/local/file.gif", "r") {|io| FastImage.type(io)} => :gif FastImage.type("test/fixtures/test.tiff") => :tiff FastImage.type("test/fixtures/test.psd") => :psd
Supported options¶ ↑
- :timeout
-
Overrides the default timeout of 2 seconds. Applies both to reading from and opening the http connection.
- :raise_on_failure
-
If set to true causes an exception to be raised if the image type cannot be found for any reason.
# File lib/fastimage.rb, line 176 def self.type(uri, options={}) new(uri, options.merge(:type_only=>true)).type end