ImageMagickで画像ファイルのトリミングをしたい
ImageMagickで、結構な数の画像をトリミングしようと思ってF#でスクリプトを書いた。F#の文字列内で"(ダブルクオテーション)を使うためには@" "" "みたいに
- @を使う
- "(ダブルクオテーション)は重ねて書く
ってのに気がつかなくてハマったのでメモ。
//imagemagickのコンバータ let convert arg = System.Diagnostics.Process.Start(@"C:\Program Files\ImageMagick-6.9.0-Q16\convert.exe", arg); //スクリプトがあるフォルダ下のimagesフォルダのpngファイルゲッツ let png_files = System.IO.Directory.GetFiles(__SOURCE_DIRECTORY__ + "\images", "*.png", System.IO.SearchOption.AllDirectories); //トリミング用の引数作成 let make_arg png = let extension = System.IO.Path.GetExtension(png) let file = System.IO.Path.GetFileNameWithoutExtension(png) + "_trim" let dir = System.IO.Path.GetDirectoryName(png) + "/../trim/" let option = " -crop 930x720+170+1 " let arg = option + @" """ + png + @""" """ + dir + file + extension + @"""" printf "%s" dir arg //pngファイルをマルっとトリミング png_files |> Array.map (fun file -> file |> make_arg |> convert)
文字列のクオート周り
F#3.0からトリプルクオート(""")でイケるって話をF# for C# developperでみた。あと@付ではじまる文字列はverbatim stringsって呼ぶそうだ。
"the last character is tab\t" @"the last character is tab\t" "this is \"good\"." @"this is ""good""." """this is "good".""" """"good" dog"""