2009-03-17
ずっと取りためているデジタル写真が2万枚くらいあるのですが、そのうちのある程度のものを、会社の先輩にゆずってもらったLibrettoに転送して、Librettoをデジタルフォトフレームにしています。 ですが、単純にコピーしておしまいと言うわけではなく、以下のような制約があります。 HDD容量が少ないので全部なんて到底入らない(全部で30GB程度ある) 画面サイズが640×480しかない 色数が254色しかない なので、取りためてある写真を全部バッチ処理でリサイズ&減色したうえで転送したいのですが、これを自動的に行うプログラムがなかなか見つからなくて困っていました。つど手動でやるのも大変ですし・・・。 で、ImageMagickを使えばこれが一発でできてしまって感激です。物凄く高機能なんですね、ImageMagickって・・・。 ImageMagick: Convert, Edit, and Compose Images 実際にはPowerShellからImagemagicを呼び出してファイルを処理させてみました。こんな感じで。 c d z : \ p i c t u r e $ d i r l i s t = d i r | W h e r e - O b j e c t { $ _ . g e t t y p e ( ) . N a m e . T o S t r i n g ( ) - e q " D i r e c t o r y I n f o " } f o r e a c h ( $ d i r i n $ d i r l i s t ) { c d $ d i r c o n v e r t . j p g - r e s i z e 6 4 0 x 4 8 0 - c o l o r s 2 5 6 ( " s m a l l _ " + $ d i r . N a m e + " _ % 0 3 d . j p g " ) m o v e s m a l l _ * . j p g " z : \ d a t a \ M y D r o p b o x \ s m a l l " c d } そうしてみるとそれなりにうまく行ったのですが、フォルダ内に大量のファイルがある関係なのか、4000枚くらい処理したところでメモリが足りないということで処理がとまってしまいました。 ...