将所有 png,jpeg,jpg 转换为 jpg 并使用 imagemagick 压缩它们

K_d*_*dev 4 command-line imagemagick

我几乎有这个代码:

for PHOTO in /home/dvms/Desktop/projs/others/tests/gulp_test/src/images/*.{png,jpeg,jpg}
   do
       BASE=`basename $PHOTO`
    convert "$PHOTO" -quality 50% "/home/dvms/Desktop/projs/others/tests/gulp_test/src/imagesCompressed/$BASE.jpg"
   done
Run Code Online (Sandbox Code Playgroud)

但是输出文件以旧文件扩展名出现,最后附加了“.jpg”,例如: imageA.png.jpg 。

如何解决这个问题?

Geo*_*sen 8

将您的代码修改为这种形式:

for PHOTO in /home/dvms/Desktop/projs/others/tests/gulp_test/src/images/*.{png,jpeg,jpg}
   do
       BASE=$(basename $PHOTO)
    convert "$PHOTO" -quality 50% "/home/dvms/Desktop/projs/others/tests/gulp_test/src/imagesCompressed/${BASE%.*}.jpg"
   done
Run Code Online (Sandbox Code Playgroud)

而不是这种$BASE.jpg用法,${BASE%.*}然后添加扩展名。


Par*_*rto 5

替换行:

BASE=`basename $PHOTO`
Run Code Online (Sandbox Code Playgroud)

有了这个:

BASE=`basename $PHOTO | cut -d. -f1`
Run Code Online (Sandbox Code Playgroud)

然后再试一次。