Processingでsave()を使うと、
その時に表示されている画面を指定のファイル名・拡張子で保存してくれるので便利です。
これをAndroid端末上で実行したかったので、
以下のようなスケッチを作成しました。
これをANDROIDモードから端末上で実行し、画面内の適当な場所をタッチすると、
SDカードのDCIMフォルダ内に「processing」というフォルダが作られ、
その中に「pict_○○.png(○○は年月日時分秒の数字の並び)」という画像ファイルが保存されると思います。
また、端末に保存されている画像を閲覧できるアプリ(ギャラリー)にも、
この画像が反映され、見ることができるようになっていると思います。
save()するだけではギャラリーに反映されないので、
「sendBroadcast(intent);」等の記述も必要なようです。
以下のページを参考にさせていただきました。
Processing for Androidで外部ストレージ(SDカード)に画像を保存する - rabeat
How to update Android's media database to show newly created images? - Processing Forum
その時に表示されている画面を指定のファイル名・拡張子で保存してくれるので便利です。
これをAndroid端末上で実行したかったので、
以下のようなスケッチを作成しました。
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory()));
void setup() {
size(displayWidth,displayHeight);
colorMode(HSB, 360, 100, 100);
background(360);
smooth();
}
void draw() {
float r = random(100);
noStroke();
fill(random(360), 80, 100, 40);
ellipse(random(width), random(height), r, r);
}
//タッチした時の動作
void mousePressed() {
save("//sdcard/DCIM/processing/pict_" +
year() + month() + day() + hour() + minute() + second() + ".png");
sendBroadcast(intent);
background(360);
}
また、AndroidManifest.xmlの</manifest>のすぐ前あたりに、以下のとおり記述しました。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
これをANDROIDモードから端末上で実行し、画面内の適当な場所をタッチすると、
SDカードのDCIMフォルダ内に「processing」というフォルダが作られ、
その中に「pict_○○.png(○○は年月日時分秒の数字の並び)」という画像ファイルが保存されると思います。
また、端末に保存されている画像を閲覧できるアプリ(ギャラリー)にも、
この画像が反映され、見ることができるようになっていると思います。
save()するだけではギャラリーに反映されないので、
「sendBroadcast(intent);」等の記述も必要なようです。
以下のページを参考にさせていただきました。
Processing for Androidで外部ストレージ(SDカード)に画像を保存する - rabeat
How to update Android's media database to show newly created images? - Processing Forum