5

这个问题几乎就是标题中提出的问题。

我有很多由 MapTiler 创建的 PNG 文件。确切地说是24083个文件。它们位于许多文件夹中,即文件夹树中的许多文件夹中,duh。事情是,手动PNGCrush所有这些都是最大的浪费时间。

请问有人有算法可以分享给我吗?一个可以递归粉碎所有这些 PNG 的?

我有一台 Windows PC,我更愿意使用 Java 或 PHP,不是另一种语言(因为我已经很了解它了),但其他的东西可能没问题。

谢谢!

4

3 回答 3

12

您不需要为此做任何特别的事情,只需使用FORWindows 命令提示符中的命令即可。

使用这一行:

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

"yourdir"是存储输入文件的根目录。

两个%f在最后:

  • 第一个是输入文件名
  • 第二个是输出文件名

-ow1.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

请参阅:RecursiveIteratorIteratorRecursiveDirectoryIteratorexec(或类似)

有了它,您可以使用:

$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 回答