今からはじめるプログラミング35

バッチプログラム。

おそらくコンピュータさんは

とても得意な処理だと思います。

前回

今からはじめるプログラミング34 - yo2an’s blog

の顔作成ですが、

NFTでうれているのは1万もの自動作成されたアイコン?スタンプ?なので、

これはもはやバッチ処理を実装するしかない、という感じだと思うので、

画面に以下のような項目を追加して、実装してみた。

・追加項目:回数を指定するテキストフィールド

      バッチ実行のボタン

画面イメージは以下のようになりました。

f:id:yo2an:20210820054655p:plain

画面イメージ

顔が大きすぎて項目がわかりづらい・・・。

そして対応する処理を追加します。

フレームにアクションリスナーを追加した上で、リスナーのメソッドに追加しました。

--------------------------------------------------------------------

//画面からの入力値

String strNum = this.txtNum.getText();

//数値に変換

int num = Integer.parseInt(strNum);

//ファイルに上書きされても意味がないのでループした回数みたいなのをファイル名につけて一意にする

String fileName = "./resize_out.png";

File defltFile = new File(fileName);

//if文意味がないかも

if(defltFile.exists()) {

//画面の回数分ファイル名を変えながら顔作成を実行

for(int i =0;i<num;i++) {

String newFileName = i + "_"+ defltFile.getName();

defltFile.renameTo(new File("./"+newFileName));

new CreateFace();

}

}

-----------------------------------------------

処理としては、すでにあるファイルをリネームして、顔作成を呼ぶようにして、上書きを回避すると、結果的に複数の実行結果ファイルを生成しているよ〜。という感じです。

普通はあまりこういうコーディングはしないです。

どちらかというと、ファイル名に、「インクリメント」した数値を「サフィックス」として追加するほうが一般的ですかね?僕はいきあたりばったりなので、こういうプログラミングしてしまいます。

というか拡張子を「トリム」して、インクリメントした数値をつけて、そのあとにまた拡張子を追加するのがめんどくさかった。

って感じでプログラムしてしまいました。

まだ完成はしていませんが、これでまとめて処理する機能は実装できたので、かなり満足しています。

本当なら入力値のチェック、エラー処理などを追加するべきですが。。。

とりあえずの目的(大量のアイコン画像を簡単に作成する)は達成できそうなので、OKでしょう!

 

sample.zip - Google ドライブ

javaではないですが、ファイル操作のいろいろがわかる本のリンクです。