RMagick problem: Image::read works well but Image::from_blob

Hi all,
I want to determine the geometry of an image. The image file may be
in local harddisk or on web. So I use open-uri and
Magick::Image::from_blob to do that work, here is the code:

open(’’) { |f|
image = Magick::Image::from_blob(f.read).first
puts “Width: #{image.columns}; Height: #{image.rows}”
}

For most of the cases, this works well. However, we I tried to read an
JPEG generated by my Ricoh Caplio digital camera, it failed and emitted
these message:

---------- code ----------
E:/workspace/ruby/idapted/testrmg.rb:6:in from_blob': JPEG datastream contains no image’ (Magick::ImageMagickError)

Surprisingly enough, if I use Magick::Image::read method to read the
same image file directly from harddisk, everything is fine, here is the
code:
---------- code ----------
g = Magick::Image::read(’’).first
puts “Width: #{g.columns}; Height: #{g.rows}”

Why do Image::read and Image::from_blob make differeces? How to
determine the geometry of a remote image?

Any comment is appreciated. Thanks!

Mike Meng wrote:

/ …

Why do Image::read and Image::from_blob make differeces? How to
determine the geometry of a remote image?

As I discovered while writing my Web editor Arachnophilia, there is
plenty
of variation in the construction of JPG images, and not all the readers
know all the constructions. The best thing to do is test the software
with
a large number of images before putting it in to service.

BTW please try for a more succinct subject line.

Mike Meng wrote:

For most of the cases, this works well. However, we I tried to read an
Surprisingly enough, if I use Magick::Image::read method to read the
Any comment is appreciated. Thanks!

Under the covers, #read and #from_blob share most of their code. If
Image.read can read the file then Image.from_blob can handle it, too.
The argument to Image.from_blob must be a string containing the entire
image. I’m guessing that the argument you’re giving it is only part of
the image. Assign f.read to a variable and display its length. Is it the
same as the size of the image file on disk?

Thanks to Paul and Timothy.

I’ve found the problem. I made a stupid mistake when open the URI of an
image file without “b” flag. With “b” flag, everything is ok.

Thanks again.

Mike

Timothy H. å??é?ï¼?

Mike Meng wrote:

Thanks to Paul and Timothy.

I’ve found the problem. I made a stupid mistake when open the URI of an
image file without “b” flag. With “b” flag, everything is ok.

Thanks again.

Mike

Timothy H. �??�?�?

Hi Mike

I have the similar issue, please check my post:
http://www.ruby-forum.com/topic/164823#new

thanks

Yi