Open the file in binary mode to write the image:

>       Net::HTTP.start(address) do |http|
>          #req = Net::HTTP::Get.new('http://a page')
>          req = Net::HTTP::Get.new('http://a page/a_image.JPG')
>          req.basic_auth 'user', 'password'
>          response = http.request(req)
>          file  = File.new('file.jpg',"w")
>          file.write(response.body)
>          file.close

Instead of the above 3 lines:
  File.open('file.jpg, 'wb') { |f| f.write response.body }

Which will open the file for binary writing and close it for you after
the block is executed.

BTW, the argument for Get.new can be just the path of the image on the
site, without the http://site part.

HTH,
Assaph