Web の画像をファイルに保存する方法

require 'net/http'
require 'uri'

def save_file(url)
  filename = File.basename(url)
  open(filename, 'wb') do |file|
    file.puts Net::HTTP.get_response(URI.parse(url)).body
  end
end

url = 'http://d.hatena.ne.jp/images/diary/g/gan2/gan2_p.gif'
save_file(url)


url は僕の日記のプロフィール画像


余談だけど、このプロフィール画像は「ウネウネしすぎ」って言われたりする。
僕はもう完全に慣れちゃってるからなんとも思わないけど
じっと見つめてみると、けっこうウネウネしてますな。こいつ。
別のに変えた方がいいのかなぁ。

追記

プロフィール画像はまだしばらくウネウネのままでいこうと思う。
スターでのコメントありがとうございます!

追記2

以下のようにすれば "open-uri" でもできるみたい。
こっちの方が分かりやすくていいかも。

require 'open-uri'

def save_file(url)
  filename = File.basename(url)
  open(filename, 'wb') do |file|
    open(url) do |data|
      file.write(data.read)
    end
  end
end

url = 'http://d.hatena.ne.jp/images/diary/g/gan2/gan2_p.gif'
save_file(url)