Ruby/PureImage

Version 0.1.0
2005.07.22
NISHIMOTO Keisuke

1 概要

ここ最近,日記サイトでコメントspamが流行し,何らかの対策を講じる必要性に迫られました.

私は普段tDiaryで日記を書いており,その日記で友人から「フレーズ画像をキーとして認証するフィルタを作ったらどうか」とのヒントを頂き,Rubyで手軽に使える画像処理ライブラリがないか探していました.

結局多方面から様々な対策方法が発明され,「フレーズ画像を使う」という人間に優しくないユーザーインターフェースを導入する必要はなくなったわけですが,その過程でRubyでの画像処理にちょっとしたハードルが2つあることに気づきました.

1つは,Rubyの画像処理ライブラリの大半がNativeライブラリを使っており,導入が簡単ではない事でした.もう1つは,ライブラリ特有の使用方法がいまいち理解できず,すぐ使えなかったことにあります.

どうせ,導入も使い方もわかりにくのであればと,以下の条件で自分で作ってみました.

あくまでずぼらなでいい加減な私のための画像処理ライブラリですが,いい感じになってきましたので公開することにします.

2 仕様

2.1 機能

以下の機能を持っています.

2.2 動作環境

以下の環境を前提にしています。

Ruby
Ruby 1.8.x 以上(iconv, zlib拡張ライブラリ必須)
OS
Windows, Linux, Macなど 上記 Ruby が動作する OS

全環境を試していないので、動作しない環境があるかもしれません.

2.3 インストール

pureimage-src-${PUREIMAGE_VERSION}.tar.gz または,pureimage-full-${PUREIMAGE_VERSION}.tar.gz を任意のディレクトリに展開してください.

${PUREIMAGE_HOME}/lib/pureimage.rb を,${RUBY_HOME}/lib/ruby/${RUBY_VERSION}/ にコピーしてください.

カレントディレクトリなど,パスが通ったディレクトリに配置しても動作すると思います.

フォントは,使用するスクリプトや,所定のディレクトリにコピーしてください.フォントのパスは,プログラムから明示的に指定します.

2.4 プログラミング

ごめんなさい.まだ書いていません.

samplesディレクトリのサンプルソースをご覧下さい.

2.5 フォント

フォントは,ビットマップフォントを,TrueTypeフォントから生成しています.ビットマップフォントは,独自フォーマットです.

TrueTypeフォントからビットマップフォントを生成するのにJavaを利用しています.

独自ビットマップフォントは,フォントメトリクス情報をもち,プロポーショナルな文字描画なども対応します.また内部をUnicodeで保持する事により,漢字等の多バイト文字列などにも対応します.

ただし,描画文字列自体は,デフォルトエンコードを利用しますので,Rubyを起動するときに,ruby -Ks ... などのように明示的に指定する必要があります.もし指定しない場合は,UTF-8扱いになります.

2 ダウンロード

以下のページからダウンロードできます。

フルパッケージ:
http://cappuccino.jp/keisuken/ruby/pureimage/pureimage-full-0.1.0.tar.gz (35MB)
ソース, ライブラリ:
http://cappuccino.jp/keisuken/ruby/pureimage/pureimage-src-0.1.0.tar.gz (2MB)
フォントのみ:
http://cappuccino.jp/keisuken/ruby/pureimage/pureimage-fonts-0.1.0.tar.gz (33MB)

3 ライセンス

Ruby/PureImage license

Copyright (c) 2005 NISHIMOTO Keisuke.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

フォント

フォントは,TrueTypeフォントから独自のビットマップフォントを生成しています.

利用したTrueTypeフォントは以下のとおりです.

みかちゃんフォント:
http://www001.upp.so-net.ne.jp/mikachan/
さざなみフォント:
http://wiki.fdiary.net/font/?sazanami

4 連絡先

質問や要望などがありましたら keisuken atmark cappuccino.ne.jp まで内容を書いてお送りください.

5 最後に

まだ未完成です.APIなどの仕様が大幅に変更される可能性がありますので,使用には十分注意してください.

Pure Rubyで作られた画像処理ライブラリは,いまのところないようです.一部では反響がありました.

一般的にこの手の重たい処理をPure Rubyで作ると,パフォーマンス面で問題があります.

しかし,以下の点で利点があるように思います.

特に汎用的ではないがすぐ実装したい画像処理は,テキスト処理と同じようによくあることと思われます.例えば以下のようなものです.

最後の項目を除き,このような処理は使い捨てであることが多いと思います.Rubyなどの使い勝手の良いスクリプト言語を利用する事によって,実行は多少遅くても,実装に伴うコストを最小限に押さえる事により,別のやりたいことに時間が割けます.

こういう用途に利用される事を目指しています.是非ご利用ください.また,使い勝手や要望などをお寄せください.

最後に,このライブラリを作成するに当たり,関西Ruby勉強会の方々にご協力いただきました.ありがとうございました。

Appendix

A1 APIリファレンス

ごめんなさい.まだ書いていません.

A2 履歴

A3 ToDo