ここ最近,日記サイトでコメントspamが流行し,何らかの対策を講じる必要性に迫られました.
私は普段tDiaryで日記を書いており,その日記で友人から「フレーズ画像をキーとして認証するフィルタを作ったらどうか」とのヒントを頂き,Rubyで手軽に使える画像処理ライブラリがないか探していました.
結局多方面から様々な対策方法が発明され,「フレーズ画像を使う」という人間に優しくないユーザーインターフェースを導入する必要はなくなったわけですが,その過程でRubyでの画像処理にちょっとしたハードルが2つあることに気づきました.
1つは,Rubyの画像処理ライブラリの大半がNativeライブラリを使っており,導入が簡単ではない事でした.もう1つは,ライブラリ特有の使用方法がいまいち理解できず,すぐ使えなかったことにあります.
どうせ,導入も使い方もわかりにくのであればと,以下の条件で自分で作ってみました.
あくまでずぼらなでいい加減な私のための画像処理ライブラリですが,いい感じになってきましたので公開することにします.
以下の機能を持っています.
以下の環境を前提にしています。
全環境を試していないので、動作しない環境があるかもしれません.
pureimage-src-${PUREIMAGE_VERSION}.tar.gz または,pureimage-full-${PUREIMAGE_VERSION}.tar.gz を任意のディレクトリに展開してください.
${PUREIMAGE_HOME}/lib/pureimage.rb を,${RUBY_HOME}/lib/ruby/${RUBY_VERSION}/ にコピーしてください.
カレントディレクトリなど,パスが通ったディレクトリに配置しても動作すると思います.
フォントは,使用するスクリプトや,所定のディレクトリにコピーしてください.フォントのパスは,プログラムから明示的に指定します.
ごめんなさい.まだ書いていません.
samplesディレクトリのサンプルソースをご覧下さい.
フォントは,ビットマップフォントを,TrueTypeフォントから生成しています.ビットマップフォントは,独自フォーマットです.
TrueTypeフォントからビットマップフォントを生成するのにJavaを利用しています.
独自ビットマップフォントは,フォントメトリクス情報をもち,プロポーショナルな文字描画なども対応します.また内部をUnicodeで保持する事により,漢字等の多バイト文字列などにも対応します.
ただし,描画文字列自体は,デフォルトエンコードを利用しますので,Rubyを起動するときに,ruby -Ks ... などのように明示的に指定する必要があります.もし指定しない場合は,UTF-8扱いになります.
以下のページからダウンロードできます。
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フォントは以下のとおりです.
質問や要望などがありましたら keisuken atmark cappuccino.ne.jp まで内容を書いてお送りください.
まだ未完成です.APIなどの仕様が大幅に変更される可能性がありますので,使用には十分注意してください.
Pure Rubyで作られた画像処理ライブラリは,いまのところないようです.一部では反響がありました.
一般的にこの手の重たい処理をPure Rubyで作ると,パフォーマンス面で問題があります.
しかし,以下の点で利点があるように思います.
特に汎用的ではないがすぐ実装したい画像処理は,テキスト処理と同じようによくあることと思われます.例えば以下のようなものです.
最後の項目を除き,このような処理は使い捨てであることが多いと思います.Rubyなどの使い勝手の良いスクリプト言語を利用する事によって,実行は多少遅くても,実装に伴うコストを最小限に押さえる事により,別のやりたいことに時間が割けます.
こういう用途に利用される事を目指しています.是非ご利用ください.また,使い勝手や要望などをお寄せください.
最後に,このライブラリを作成するに当たり,関西Ruby勉強会の方々にご協力いただきました.ありがとうございました。
ごめんなさい.まだ書いていません.