SDL::Surface.load_bmp_from_ioを使う

よくよく、リファレンスを読んでみれば、StringIOが使えるって書いてあるじゃないか。
気づくのに時間が、かかった。

require "stringio"
してから

url = "http://cairographics.org/cairo-banner.png"
IO.popen("wget -q -O - #{url} | convert - bmp:-") do |io|
StringIO.open(io.read){|s| @surface = SDL::Surface.load_bmp_from_io(s)}
end

これで、OKだって。
convertで画像処理してから使うなら

url = "http://cairographics.org/cairo-banner.png"
IO.popen("wget -q -O - #{url} | convert - bmp:-"){|io| @data = io.read}
IO.popen("convert -resize 75% - -" ,"r+") do |io|
io.write(@data)
io.close_write
StringIO.open(io.read){|s| @surface = SDL::Surface.load_bmp_from_io(s)}
end

こんな感じ。
これで、 rcairo 無しで surfaceに読み込める。
わかれば、こんなもんなんだよね。ちょっと、悩みすぎたよ。
[PR]
by gaziya | 2011-02-15 19:17