RMagick and JPEG datastream contains no image
December 7th, 2006
Today, I hit a major roadblock: “JPEG datastream contains no image”. I turned to Google and found a solution.
Line 55 of tempfile.rb is:@tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600) |
Unfortunately, on Windows, this causes problems. If the file contains binary data (such as a JPEG datastream…), the fact that we open the file without the BINARY flag sometimes truncates the file content.
I patched my local Ruby 1.8.4 version to this:@tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL|File::BINARY, 0600) |
The only change is I OR the File::BINARY flag to the mode parameter.
Now, I guess I should submit a Ruby enhancement request, no ? With failing test and all ? Sometimes I hate my Windows box…
January 29th, 2008 at 11:10 PM
Thanks! I know this is an old post, but I ran into this issue. It’s still not fixed in 1.8.6.
In addition to your patch, I also had to change the File.open call in the #open method to: File.open(@tmpname, ‘rb+’) (line 77 in 1.8.6).