« 歩いて帰った男 | トップページ | すべてが政治的行動になる… (ハスケル・ウェクスラー) »

2005-08-27

RubyでBMPファイルをあつかう

必要にせまられて、RubyでBMPファイルをあつかう簡単なライブラリを書いた。

ライブラリとドキュメント、サンプルコード ※ Ruby 1.8用

(2014年6月3日 追記)
従来のコードのままでは、Ruby 1.9以降で正しく動作しませんでした。
(Tagussanほか一名の方、コメントでの指摘ありがとうございます)
Ruby 1.9以降用に修正したコードをGitHub上に公開しましたので、そちらもご利用ください。
bmp-ruby


RubyでBMP画像(Windowsビットマップ)をあつかうためのライブラリで、無圧縮の24bitカラー(1677万色)にのみ対応している。

このライブラリを使ってできることは、
・新しいビットマップ画像を生成する
・既存のBMPファイルを読み込む
・ビットマップ画像全体を一色で塗りつぶし
・ビットマップ画像のピクセル単位の色の読み込み/書き換え
・ビットマップ画像の切り抜き(クリッピング)
・ひとつのビットマップ画像の上に別のビットマップ画像を貼り付ける
・BMPファイルとして書き出す

プリミティブな機能しかないが、自由に使ってください。

|

« 歩いて帰った男 | トップページ | すべてが政治的行動になる… (ハスケル・ウェクスラー) »

コメント

まさにrubyでbmpを扱いたかったので、使わせていただきます。
ありがとうございました!

投稿: table | 2008-04-17 22:03

Sketchupというソフトからrubyを使ったデータの書き出しでbmpでグラデーションを作る方法をさがしてました。

とても参考になりました。
ありがとうございます。

投稿: TAK2 | 2009-07-07 00:22

rubyでbmpを扱いたくココへたどり着きました。便利なライブラリ提供してくださってありがとうございます!
ただ、どうやら私のruby1.9.3ではimage.pgetすると結果がバイナリ文字列と解釈されてしまい、["\xFF","\x00","\xF0"]とかってなってしまうので、return [r.unpack("C*")[0], g.unpack("C*")[0], b.unpack("C*")[0]]とする必要があったのを報告させて頂きます。

投稿: Tagussan | 2013-03-24 21:30

使わせて頂きました。しかし、Ruby1.9.3では以下の部分を変更する必要がありました。

# x, y, r, g, b は整数であることを期待している
def pset(x, y, r, g, b)
return if x 255
g = 255 if g > 255
b = 255 if b > 255

@buf[(@height - 1 - y) * @line_size + x * 3 ] = b.chr # 変更
@buf[(@height - 1 - y) * @line_size + x * 3 + 1] = g.chr # 変更
@buf[(@height - 1 - y) * @line_size + x * 3 + 2] = r.chr # 変更
end

投稿: | 2013-08-05 22:47

使わせていただきました。ありがとう!

投稿: obelisk | 2016-04-29 20:49

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: RubyでBMPファイルをあつかう:

« 歩いて帰った男 | トップページ | すべてが政治的行動になる… (ハスケル・ウェクスラー) »