2016-10-10 6 views
2

私は、Core Imageを使って入力画像をぼかすような簡単なコマンドラインmacOSアプリケーションを考え出し、ディスクのどこかにディスクに保存します:Swift 3とMacOS:ディスクから直接ファイルをロードする方法

./my-binary /absolute/path/input.jpg /absolute/path/output.jpg 

絶対パスからの画像をCIImageにロードするにはどうすればよいですか? imageURLを実行した後nilを保持しかし

let imageURL = Bundle.main.pathForImageResource("/absolute/path/input.jpg") 
let ciImage = CIImage(contentsOf: imageURL) 

は、私は、次のコードを持っています。

答えて

3

バンドルを使用する代わりに、コマンドラインアプリケーションに与えるパスを使用する必要があります。このためには、CommandLine.Argumentsを使用してください。

簡単な例:

import Foundation 
import CoreImage 

let args = CommandLine.arguments 

if args.count > 2 { 
    let inputURL = URL(fileURLWithPath: args[1]) 
    let outputURL = URL(fileURLWithPath: args[2]) 
    if let inputImage = CIImage(contentsOf: inputURL) { 
     // use the CIImage here 
     // save the modified image to outputURL 
    } 
    exit(EXIT_SUCCESS) 
} else { 
    fputs("Error - Not enough arguments\n", stderr) 
    exit(EXIT_FAILURE) 
} 
+2

マイナーnitpick:コマンドラインツールのためのstdoutではなくstderrに代わりに '0'と '1'、および印刷エラーメッセージの 'EXIT_SUCCESS'と' EXIT_FAILURE'を使用してください。 –

+0

@MartinRいい考えです。完了しました。 – Moritz

+0

チャームのように働いた。ありがとうございました。 – Pono

関連する問題