首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不更改文件名的jpegtran优化

不更改文件名的jpegtran优化
EN

Stack Overflow用户
提问于 2011-04-07 17:53:18
回答 6查看 23.5K关注 0票数 21

我需要优化一些图像,但不能更改它们的名称。

代码语言:javascript
复制
jpegtran -copy none -optimize image.jpg > image.jpg 

但是,这似乎会创建一个文件大小为0的文件。当我对不同的文件名执行此操作时,大小仍然完全相同。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-07 20:29:04

这样如何:

代码语言:javascript
复制
jpegtran -copy none -optimize -outfile image.jpg image.jpg

我无论如何都不是shell专家,但我认为,使用您的原始命令,一旦执行,重定向就会设置为覆盖您的image.jpg。然后,当jpegtran尝试读取它时,它会发现一个空文件。

票数 31
EN

Stack Overflow用户

发布于 2012-08-22 12:24:16

我使用这个脚本。工作完美无瑕。我希望这能帮到你。

https://gist.github.com/iimos/7424025

代码语言:javascript
复制
#! /bin/sh

EXTENSIONS="jpe?g"

if [ -z "$1" ]; then
    DIR="`pwd`"
else
    DIR="$1"
fi

# Optimize JPEG images
find "$DIR" -regextype posix-egrep -regex ".*\.($EXTENSIONS)\$" -type f | xargs -I{} jpegtran -optimize -progressive -outfile "{}.optimized" "{}"

# Rename xxx.jpg.optimized -> xxx.jpg
find "$DIR" -name '*.optimized' -print0 | while read -d $'\0' file; do 
    chown $(stat -c "%U:%G" "${file%.optimized}") "$file"
    chmod $(stat -c "%a" "${file%.optimized}") "$file"
    mv -f "$file" "${file%.optimized}"; 
done

用法1:

代码语言:javascript
复制
optimize-images.sh /images/dir

用法2:

代码语言:javascript
复制
cd /images/dir
optimize-images.sh 
票数 10
EN

Stack Overflow用户

发布于 2011-10-27 21:07:28

我只用了三行代码:

代码语言:javascript
复制
jpegtran -optimize image.jpg > image.jpg-opt
cp image.jpg-opt image.jpg
rm image.jpg-opt

效果很好。

编辑:一次只能编辑一个文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5579183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档