Image 如果图像已优化,请查找图像
我想知道是否有任何方法可以跳过文件,如果它已经优化 我正在使用以下命令运行PNG图像的优化:Image 如果图像已优化,请查找图像,image,optimization,Image,Optimization,我想知道是否有任何方法可以跳过文件,如果它已经优化 我正在使用以下命令运行PNG图像的优化: find '*.png' -print0 | xargs optipng -nc -nb -o5 -quiet -preserve -dir ~/images/output -log ~/optpng.log 由于映像目录有数千个映像,因此处理该映像需要很长时间 请给我建议一个解决方案 如果您有一台多核机器,请考虑并行执行这些操作(例如与-p4并行执行4次),并且不要为每个文件调用新进程(例如,每
find '*.png' -print0 | xargs optipng -nc -nb -o5 -quiet -preserve -dir ~/images/output -log ~/optpng.log
由于映像目录有数千个映像,因此处理该映像需要很长时间
请给我建议一个解决方案 如果您有一台多核机器,请考虑并行执行这些操作(例如与
-p4
并行执行4次),并且不要为每个文件调用新进程(例如,每个optipng
进程执行8个图像):
find ... | xargs -n 8 -P 4 optipng ...
或者,您可以使用GNU并行
find -name "*png" -type f |while read FILE
do
echo $FILE
BASEFILE=$(basename $FILE)
optipng $FILE > /tmp/$$.out
TEST=$(cat /tmp/$$.out |grep "optimized" |wc -l)
if [ $TEST -gt 0 ]
then
echo "$BASEFILE is already optimized"
else
echo "$BASEFILE NOT is already optimized"
cp $BASEFILE ~/destination_dir
fi
done
查找-名称“*png”-读取文件时键入f |
做
echo$文件
BASEFILE=$(basename$文件)
optpng$FILE>/tmp/$$.out
测试=$(cat/tmp/$$.out | grep“优化”| wc-l)
如果[$TEST-gt 0]
然后
echo“$BASEFILE已优化”
其他的
echo“$BASEFILE尚未优化”
cp$BASEFILE~/destination\u dir
fi
完成
您可以指定某种大小与分辨率的比率。因此,对于每个图像,您可以检查其大小和分辨率,并决定是否需要优化此图像。但我的图像目录具有不同大小的图像,如面包屑、边框、背景等。抱歉,我不能使用mtime,我希望将其配置为jenkins Job的一部分抱歉,我根本不了解jenkins。也许一种选择是在优化每张图像时,使用
jhead
或ImageMagick
在图像的“注释”部分添加一个小注释,然后在再次优化之前检查注释。或者记录所有优化图像的MD5校验和。感谢您的宝贵回复,顺便说一句,我已经找到了如何处理已优化图像的方法