Processing:絶対パスを返してくれるsketchPath()
はじめに
ProcessingでTwitter botに画像をツイートさせようとしたら、「画像の相対パスではなく絶対パスを送ってくれないとダメです!」と言われてしまいました。そのときはその画像があるフォルダーまで「C:\Users\Documents\・・・\image.png」と書いきましたが、毎回これをやるのはだるいですよね。それで今回はその問題を解決してくれる「sketchPath()」と「dataPath()」について紹介しようと思います。
sketchPath()とdataPath()
百聞は一見に如かず、まずは下のコードと出力データをご覧ください。
https://gyazo.com/4b6ca7449cd85b2688c39ac9b24f3f4e
フォルダやファイルの構成
フォルダとファイルは下のような構成になっています。
https://gyazo.com/617c2df4660cdcca56db01f940f20a2e
sketchPath()
sketchPath()は実行するpdeファイルが入っているフォルダーの絶対パスを返してくれる命令です。今回の場合はC:\Users\Documents\path_searchを返してくれます。
またそのフォルダー内のフォルダやファイルを参照するときはsketchPath("image1.png")やsketchPath("data/image2.png")と書きます
まとめるとこんな感じです。
https://gyazo.com/1cbe10830fdb8d3ba0c3d1dc295e0e3c
dataPath()
次にdataPath()についてです。dataPath()は実行するpdeファイルと同じフォルダーの中にあるdataフォルダー絶対パスを返してくれます。今回の場合は「C:\Users\Documents\path_search\data」を返してくれます。
つまり、先ほどの 「sketchPath("data/image2.png")」は「dataPath("image2.png")」と書き換えることが可能です。
ここで注意なのですがsketchPath()の場合は「sketchPath()」と書くだけで絶対パスを返してくれましたが、dataPath()の場合はカッコの中にString型を入れなければいけません。「C:\Users\Documents\path_search\data」と返してほしいときは「dataPath("")」と書きしょう。
まとめるとこんな感じです。
https://gyazo.com/b357ef9cc304b614154981dd6cdc03fb
おわりに
今までProcessingで絶対パスが指定できないイライラがこれで解消できました!
便利な命令ですので、ぜひ使っていきましょう。
参考資料