我想从命令行使用 jpg 图像优化整个测试文件夹。 我找到了这个,但它不起作用:
cd /home/site/html/update/test/
find . -exec jpegtran -optimize "{}" "{}.opti.jpg" "{}" \;
我想覆盖现有图像。
建议?
答案:
find /img/path -name "*.jpg" -type f -exec jpegtran -copy none -optimize -outfile {} {} \;
答案:
find /img/path -name "*.jpg" -type f -exec jpegtran -copy none -optimize -outfile {} {} \;
虽然这个问题很早就在这里解决了,但是谈论Python方法:
import subprocess
for image_name in arr:
subprocess.call(["jpegtran", "-your", "-instructions"])
假设您的指令类似于:
jpegtran -optimize -progressive -scans script_new.txt -outfile progressive.jpg original.jpg
所以你的指令将是这样的:
subprocess.call(["jpegtran", "-optimize", "-progressive", "-scans", f"{scan_name}.txt", "-outfile", name_progressive, name_original])
为了方便起见,name_progressive、name_original 和 scan_name 是变量,并且使用概念 f 字符串。
使用 GNU Parallel 更简洁、并行地完成所有任务,如下所示:
parallel jpegtran -copy none -optimize -outfile {} {} ::: *.jpg
使用
parallel --eta ...
或 parallel --bar ...
获取预计到达时间或进度条。