予想に反して(ある意味諦めがついたけども)そこか!って感じで
した。 自分の中ではかなり頑張ったシステムの構築だったんだけどなぁ…
現実は厳しく、自分のやりたかったことと問題点をメモとして列挙。
・問題点 1.windows用の共有サーバーに命名規則が微妙なjpg画像が多数 2.画像はCMYKのjpgのものも多数あるがRGBのものもあって不明 3.上記サーバーから人的に画像ファイルを探してこないといけない。 4.その画像ファイルを大、中、小の3サイズリサイズ (大はそのままの縮尺比のjpg) (中は長辺に合わせて短辺を白で埋めるmaxバイナリサイズが指定) (小はgifでmaxバイナリサイズが指定) 5.それらの画像をとあるDBからIDを探してリネーム
pphp+ImageMagick+Ruby+Gimp+Mysqlで構築してみる。
・検証 1.検証用のCYMK方式jpgをGimp2.6で読んだらRGBになった! 2.Linuxにマウント 3.cronでfind結果をMysqlに入れる。 4.Gimpのschemeでリサイズだと割り算が微妙なのでImageMagickなどと併用する。 5.特に問題なし
実際に起きた問題
1.ものによってはRGB変換できないものがあった。 (sparater+を使うとグラデーションが微妙になる) 2.Active Directoryでも問題なくマウントできて問題なし。 3.新しくwindowsサーバーに追加があった場合が困るがまぁ問題なし。 4.Gimp+schemeをphp経由で動かすのが微妙。(補足あり) 5.楽勝
実際問題としてよくある問題だけども、phpなどの所謂webツール上でのsystem関数やexecを使う場合、Apacheの権限がApache(xmappだとnobodyが多い)なのでrootで動かさないといけないものが動かない。 よくある解決方法は大体3つぐらい。
1.httpd.confでroot権限を持たせる。 2.system関数部分にsudoで書き込む 3.system関数部分にsystem("echo pass | sudo -S hoge")のようにパイプする。
結局sudoersに「ALL=(ALL) NOPASSWD: ALL」とか設定するのがよくあるんだけども、この方法って当たり前に「rm」コマンドもできてしまうので、推奨はされないんだよね。
んで、どう解決したかというとsu権限を持たせたcornを5分起きに起動させるてmailコマンドで処理を分散化した。
実際問題、70ファイルのバイナリファイルをwebツールのリアルタイムで処理させるのは怖い。
2.6で一度検証した時にはいけたと思ったので、ショックが大きかったなぁ…。
このCMYK to RGBというのは紙などの実媒体データと完全web上での画像を処理する場合に一番のネック部分だと思う。
某A社がその辺を独占していて、「そこに手を出すにはA社ソフトを買うしかないよ!」って状況がなんだかなぁ…。
まぁGimp3はCMYKに対応するという噂を聞いているので期待はしてますが…。
うーむ、Linuxで画像処理はこの辺が限界かな、windowsだと無理矢理画面をキャプチャするとか色々邪道な技はありそうだけども… photoshopってCUI対応しないのかな?