This is based on ImageSize, by Keisuke Minami <keisuke@rccn.com>. It can be found at www.rubycgi.org/tools/index.en.htm
This has been integrated into PDF::Writer because as yet there has been no response to emails asking for my extensions to be integrated and a RubyGem package to be made available.
# File lib/pdf/writer/graphics/imageinfo.rb, line 44 def formats Formats.constants end
Receive image & make size. argument is image String or IO
# File lib/pdf/writer/graphics/imageinfo.rb, line 54 def initialize(data, format = nil) @data = data.dup rescue data @info = {} if @data.kind_of?(IO) @top = @data.read(128) @data.seek(0, 0) # Define Singleton-method definition to IO (byte, offset) def @data.read_o(length = 1, offset = nil) self.seek(offset, 0) if offset ret = self.read(length) raise "cannot read!!" unless ret ret end elsif @data.is_a?(String) @top = @data[0, 128] # Define Singleton-method definition to String (byte, offset) @data.extend(PDF::Writer::OffsetReader) else raise "argument class error!! #{data.type}" end if format.nil? @format = discover_format else match = false Formats.constants.each { |t| match = true if format == t } raise("format is failed. #{format}\n") unless match @format = format end __send__("measure_#@format".intern) unless @format == Formats::OTHER @data = data.dup end