RubyでWeb上の画像を指定したディレクトリに保存する
画像URLを指定するとその画像データをローカルに保存するコードです。
保存先のディレクトリは/var/tmp/hoge/
に指定して保存します。
開発環境
- ruby 1.9.3
ソースコード
与えられたURLの画像を保存する関数は以下のように書けます。
require "open-uri" require "FileUtils" def save_image(url) # ready filepath fileName = File.basename(url) dirName = "/var/tmp/hoge/" filePath = dirName + fileName # create folder if not exist FileUtils.mkdir_p(dirName) unless FileTest.exist?(dirName) # write image adata open(filePath, 'wb') do |output| open(url) do |data| output.write(data.read) end end end
関数が呼ばれたらまず保存パス(ディレクトリパス+ファイル名)を作成します。
FileUtilsを使って、保存先ディレクトリがなければ作成し、
最後にURL先の画像データをファイルに書き出します。
あとは適当な場所でこの関数を呼んでやればOKです。
url = "http://cdn1.www.st-hatena.com/users/hi/himaratsu/profile.gif" save_image(url)
実行方法
上記の記述をget_image.rb
というファイル名で保存し、実行してみます。
$ ruby get_image.rb
実行結果
/var/tmp/hoge/
の下にprofile.gif
というファイルが保存されているはずです。
$ cd /var/tmp/hoge/ $ ls profile.gif
このようにURLを指定して画像データを保存することができます。
参考リンク
関連書籍
何か間違い等あれば @himara2 までご連絡下さい。