ImageMagickで、/tmpとかにmagick-ayu89r53とかいうサイズの大きいファイルが出来るのをなんとかしたいImageMagickを使って日々運用していると、時々ディスクフルアラートが出たりします。調べてみると、/tmpにmagick-ayu89r53とかよく分からないファイルが数十GB位のサイズになっていてびっくりします。value</em>[/text]というのが設定出来るようです。<code>time</code>[/text]が指定出来るようです。diskは、その名の通り、disk使用量。この設定が/tmp/magick-ナンタラに影響しているのでは無いかと思ったりします。これらの現在の設定値を確認出来るコマンドがあるので、叩いてみます。resource[/shell]このdiskの初期値が18.446744EBとか書いてあります。EBって何ですか!?と一瞬びっくりしますが、エクサバイトの事ですかね。今の運用環境からするとほぼ無限なサイズがデフォルトに指定されています。ここを変えるだけで、バカみたいにでかい/tmp/magick-ナンタラは出来なくなるかと思います。これから実験運用してみようかと思います。1GBと書けば良いです。別アプリからライブラリを叩く場合はImageMagickの設定のディレクトリに入っているpolicy.xmlに、<policymap>があるのでこのなかでname=”disk”のものを探して1GBに設定すれば良いはずです。Scalaで作るという事なのですまずはJDKのインストールこれは、http://www.oracle.com/からダウンロードします。SunがOracleに買収されたのは未だにショックです。いうのはおいといてダウンロードしてきたJDKを解凍し、/usr/localに移動します。/usr/local[/shell]JAVA_HOMEを設定します。scala-2.9.1.final.zip[/shell]scalaも/usr/localに移動します。/usr/local[/shell]JAVA_HOMEと同様にSCALA_HOMEを設定します。/etc/environmentを開いて、JAVA_HOMEの下に[shell]SCALA_HOME=”/usr/local/scala-2.9.1.final”[/shell]を追加その下のPATHにも[shell]/usr/local/scala-2.9.1.final/bin[/shell]を追加。最終的に、PATHは以下のようになると思います。libjmagick6-java[/shell]若干パッケージ名が違うので注意パッケージで入れた場合、jmagick6.jarは/usr/share/javaに置かれます。libJMagick.soですが、/usr/lib/jniに入ります。このjni、パスが通っていませんので、後々エラーが出ると思うのでここでパスを通しちゃいます。LD_LIBRARY_PATH=/usr/lib/jni:$LD_LIBRARY_PATH[/shell]を追加しておきます。Frameworkを入れます。http://www.playframework.org/からダウンロード今回は2.0を使っています。1.x.xではないです。play-2.0.zip[/shell]play自体は、個人用ホームに置きます。play=~/play-2.0/play[/shell]を追加これで、playコマンドがたたけるようになりました。新しいプロジェクトを作成します。ImageResizer[/shell]ImageResizerディレクトリに入ります。ImageResizer[/shell]libディレクトリを作成します。lib[/shell]とりあえず、/usr/share/javaからjmagick6.jarをこのlibにコピーします。めんどくさくなってきたので、ソースを貼り付けます。file)[/text]テスト用の画像をどこからか持ってきます。/images/sampleに入れます。このsampleというディレクトリはイメージタイプとしてURLから指定可能なように作ってみました。このプロジェクトを実行します。run[/shell]URLにアクセスしてみます。http://localhost:9000/images/sample/Chrysanthemum/200×200/b0f87c3f6aa9818bfa2942a6224a9648.jpgどうでしょうか、縮小されたイメージが表示されましたでしょうか。このImageResizerの今後の展開ですがまだ未実装な部分を実装していきます。/imagesに置いた画像から、別の拡張子の画像を生成できるようにというのも実装したいと思います。作るに当たって画像を見ただけでどの画像なのかを識別できる簡単に画像を生成できるという事に重点をおいてみます。ImageMagickは、convertというコマンドで実行する事が出来ます。128×128というオプションを付けます。画像の背景色を指定するときはxc:yellowというオプションを付けます。yellowの部分は、RGB指定でも出来ます。test.pngで画像が作成されます。これだけだと、画像の識別が出来ないので、文字を書き込んでみます。Sample”これは、テキストで、書き出し開始位置がx=0、y=20の場所からSampleという文字を出力するというオプションです。文字は左下に起点があるのでy軸のサイズはフォントサイズを考慮した位置を指定しないといけません。ここまでで、コマンドライン上だけで画像にテキストを描画する事が出来ました。test.pngあとは、Windows上であれば、バッチファイルで連番などでこのコマンドを回すかLinux系であればシェルで回せば、大量の画像を一度に作成する事が出来ます。