読者です 読者をやめる 読者になる 読者になる

Think Big Act Local

iPhone開発を軸にブレブレの記事を書いていきます。

RubyでWeb上の画像を指定したディレクトリに保存する

Ruby

画像URLを指定するとその画像データをローカルに保存するコードです。
保存先のディレクトリは/var/tmp/hoge/に指定して保存します。

開発環境

ソースコード

与えられた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を指定して画像データを保存することができます。

参考リンク

関連書籍

Rubyレシピブック 第3版 303の技

Rubyレシピブック 第3版 303の技

何か間違い等あれば @himara2 までご連絡下さい。