这个问题几乎就是标题中提出的问题。
我有很多由 MapTiler 创建的 PNG 文件。确切地说是24083个文件。它们位于许多文件夹中,即文件夹树中的许多文件夹中,duh。事情是,手动PNGCrush所有这些都是最大的浪费时间。
请问有人有算法可以分享给我吗?一个可以递归粉碎所有这些 PNG 的?
我有一台 Windows PC,我更愿意使用 Java 或 PHP,而不是另一种语言(因为我已经很了解它了),但其他的东西可能没问题。
谢谢!
您不需要为此做任何特别的事情,只需使用FOR
Windows 命令提示符中的命令即可。
使用这一行:
FOR /R "yourdir" %f IN (*.png) DO pngcrush "%f" "%f.crushed.png"
这"yourdir"
是存储输入文件的根目录。
两个%f
在最后:
-ow
1.7.22 中添加的选项以使操作就地:
FOR /R "yourdir" %f IN (*.png) DO pngcrush -ow "%f"
有关的更多信息,请参阅此页面FOR
。
程序 'sweep' http://users.csc.calpoly.edu/~bfriesen/software/files/sweep32.zip允许您递归地对目录中的所有文件运行相同的命令。
请参阅:RecursiveIteratorIterator与RecursiveDirectoryIterator和exec(或类似)
有了它,您可以使用:
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('%your-top-directory%'));
foreach ($it as $entry) {
if (strtolower($entry->getExtension()) == 'png') {
// execute command here
}
}