5

質問は、ほとんどタイトルで尋ねられていることです。

MapTilerで作成したPNGファイルがたくさんあります。正確には24083ファイル。それらは、多くのフォルダ、つまりフォルダのツリーにある多くのフォルダ内にあります。つまり、これらすべてを手動でPNGCrushするのは時間の最大の無駄です。

誰かが私のために共有するアルゴリズムを持っていますか?これらすべてのPNGを再帰的に粉砕できるものはありますか?

私はWindowsPCを持っていて、他の言語よりもJavaまたはPHPで使用したいと思っています(すでによく知っているので)が、それ以外の場合は問題ないかもしれません。

ありがとう!

4

3 に答える 3

12

これには特別なことは何も必要ありませんFOR。Windowsコマンドプロンプトのコマンドを使用するだけです。

次の行を使用します。

FOR /R "yourdir" %f IN (*.png) DO pngcrush "%f" "%f.crushed.png"

"yourdir"、入力ファイルが保存されているルートディレクトリです。

最後の2つ%f

  • 最初のものは入力ファイル名です
  • 2つ目は出力ファイル名です

-ow操作をインプレースにするために1.7.22で追加されたオプション

FOR /R "yourdir" %f IN (*.png) DO pngcrush -ow "%f"

の詳細については、このページを参照してくださいFOR

于 2011-06-29T08:22:23.547 に答える
1

プログラム「sweep」http://users.csc.calpoly.edu/~bfriesen/software/files/sweep32.zipを使用すると、ディレクトリ内のすべてのファイルに対して同じコマンドを再帰的に実行できます。

于 2011-06-29T08:16:01.660 に答える
1

参照:RecursiveDirectoryIteratorおよびexec(または同様のもの)を使用したRecursiveIteratorIterator

それであなたは使うことができます:

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('%your-top-directory%'));
foreach ($it as $entry) {
  if (strtolower($entry->getExtension()) == 'png') {
     // execute command here
  }
}
于 2011-06-29T08:16:31.023 に答える