Hatena::Grouprubyist

Going My Ruby Way このページをアンテナに追加 RSSフィード

Ruby ロゴ (C) Ruby Association LLC

2012年03月31日(土)

Ruby/SDL (Video)

| 12:46 |  Ruby/SDL (Video) - Going My Ruby Way を含むブックマーク はてなブックマーク -  Ruby/SDL (Video) - Going My Ruby Way  Ruby/SDL (Video) - Going My Ruby Way のブックマークコメント

Ruby/SDL (Video) の使い方のメモ。

インストール

Ubuntu の場合、libsdl-ruby パッケージをインストールする。

(例)他の画像と異なるピクセルを塗り潰す処理

#!/usr/bin/env ruby
# -*- coding: UTF-8 -*-

require 'sdl'
require 'image_size'

file1, file2, = *ARGV
(file1 && file2) or raise ArgumentError, "usage: #{$0} [opts] file1 file2"

is = open(file1, 'rb') {|f| ImageSize.new f.read }

SDL.init SDL::INIT_VIDEO
screen = SDL.set_video_mode is.w, is.h, bpp=32, SDL::SWSURFACE

img1 = SDL::Surface.load(file1).displayFormat
img2 = SDL::Surface.load(file2).displayFormat
(img1.w == img2.w && img1.h == img2.h) or raise "image2 wrong size"

color = [0, 0, 255]   # 塗り潰し色(青)

[*(0...img1.w)].product [*(0...img1.h)]  do |x, y|
  img1[x, y] = color if img1[x, y] == img2[x, y]
end

screen.put(img1, 0, 0)
screen.updateRect(0,0,0,0)
puts "Please, press [Enter] key" ; $stdin.gets

### BMPファイルに出力する場合は、下行をバックアウトする
### (出力は BMP しかサポートされてないみたい....)
# img1.save_bmp outfile='output.bmp'

# vi:set ts=2 sw=2 et:

参考

image_size

| 11:55 |  image_size - Going My Ruby Way を含むブックマーク はてなブックマーク -  image_size - Going My Ruby Way  image_size - Going My Ruby Way のブックマークコメント

画像の幅や高さを取得できる image_size ライブラリを使ってみました。

簡単な使い方のメモです。

インストール

RubyForge からダウンロードしてインストール。

no title

使用例

try.rb

#!/usr/bin/env ruby
# -*- coding: UTF-8 -*-

require 'image_size'

filename = ARGV[0] or raise "no arguments"

f   = open filename, 'rb'          # 'rb'オプションは必ずつけること
img = f.read
is  = ImageSize.new img

p is.w
p is.h
p is.size

# vi:set ts=2 sw=2 et:

try.rb の実行結果。(01.jpg のサイズは 1106x827)

$ ruby t.rb 01.jpg 
1106
827
[1106, 827]

参考

no title