mieki256's diary



2014/01/03(金) [n年前の日記]

#1 [ruby] Rubyで画像をダウンロード

数日前から、「Rubyスクリプトを実行するだけでドット絵が表示されたら楽だろうなー」と思って、アレコレ考えてたのだけど。ふと、「手元に画像ファイルが存在しなかったら、その時だけ、Webサーバから持ってくればいいんじゃないか?」と閃いて。

検索してみたら、 _ネット上の画像をRubyでダウンロードする方法 - ダークな糸 で解説されてる内容がそのものズバリな感じで。参考にしつつ、自分も実験。

_http_access_test1.rb
# 画像をネットから読み込むテストその1

require 'open-uri'
require 'dxruby'

uri = "http://www.geocities.jp/mieki256jp/resource/_dxruby_image_ufo.png"
fn = File.basename(uri)
unless File.exist?(fn)
  # カレントフォルダ内に画像が無いのでダウンロード
  puts "not found #{fn}"
  puts "download #{uri}"
  src = open(uri)
  dst = open(fn, "wb")
  dst.write(src.read())
  dst.close()
  src.close()
else
  puts "found #{fn}"
end

img = Image.load(fn)

Window.loop do
  break if Input.keyPush?(K_ESCAPE)
  Window.draw(0, 0, img)
end

_http_access_test2.rb
# 画像をネットから読み込むテストその2

require 'net/http'
require 'uri'
require 'dxruby'

uri = URI("http://www.geocities.jp/mieki256jp/resource/_dxruby_image_sprite1.png")
fn = File.basename(uri.path)
unless File.exist?(fn)
  # カレントフォルダ内に画像が無ければダウンロード
  puts "not found #{fn}"
  puts "download #{uri.host} #{uri.path}"
  http = Net::HTTP.new(uri.host)
  response = http.get(uri.path)
  image = response.body
  file = open(fn, "wb")
  file.write(image)
  file.close()
else
  puts "found #{fn}"
end

img = Image.load(fn)

Window.loop do
  break if Input.keyPush?(K_ESCAPE)
  Window.draw(0, 0, img)
end

一応、Geocities 内の自分のアカウントにアップロードした画像を、DLかつ表示することはできるようになった。

ただ、自分が最初にやってみたいと思った処理は、Dropbox に置いてある画像を取得する処理、だったわけで…。Geocities に一々アップロードするのは、ちと面倒臭いけど。Dropbox ならローカルで該当フォルダにコピーするだけだし。

Dropbox と言っても、共有リンクを取得する形、つまりは、一般に公開されてるURLから取得するソレなのだけど。試してみたら、なんだかエラーが。Dropbox の共有リンクって、http ではなくて https から始まるURLなので、おそらくソレが原因なのかなと。しかし、Ruby で https アクセスをしようとすると、証明書がどうのこうのという話になってくるようで。

_library net/https
_HTTPSでサーバーに接続 - うなの日記
_RubyにおけるHTTPS通信 - 狼ニコ生うらやまけしからん日記

どう考えても、「Rubyスクリプトを動かすだけで画像がサクッと表示される」という状況から、かけ離れてしまうよなと…。

もしかすると、 _OpenGameArt.org あたりに画像を登録して、そこに httpアクセスしたほうがいいのかな、という気もしてきたり。

2014/01/15追記。 :

色々実験してるうちに、上記URLの画像を削除してしまったらしい…。どの画像を使おうとしてたのか忘れた…。

何にせよ、こういう手もありそうだと分かった、ということで。

以上です。

過去ログ表示

Prev - 2014/01 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project