【问题标题】:Convert WEBP images to PNG by Linux command [closed]通过 Linux 命令将 WEBP 图像转换为 PNG [关闭]
【发布时间】:2019-08-05 06:40:11
【问题描述】:

我有很多类似webp format images in a folder but with .jpg 的扩展名

abc-test.jpg

这是一个webp 格式的图像。我希望它转换为具有相同名称的.png 格式,因为我使用了这个命令并且它有效

find . -name "*.jpg" -exec dwebp {} -o {}.png \;

它将所有webp 图像转换为.png,但问题是它正在保存这样的图像:

abc-test.jpg.png

但我的要求是在没有.jpg 扩展名的情况下保存它

abc-test.png

【问题讨论】:

    标签: linux image command webp


    【解决方案1】:

    如果您有很多需要转换/重命名,我建议您使用 GNU Parallel,不仅可以通过并行处理来更快地转换它们,还可以利用修改文件名的能力。

    你想要的命令是:

    parallel dwebp {} -o {.}.png ::: *.jpg
    

    其中{.} 表示“没有原始扩展名的文件名”

    如果你也想递归到子目录,你可以使用:

    find . -name "*.jpg" -print0 | parallel -0 dwebp {} -o {.}.png
    

    如果你想要一个进度表,或者“预计到达时间”,你可以在parallel 命令之后添加--progress--eta

    如果您想查看 GNU Parallel 会运行什么,而不实际运行任何东西,请添加 --dry-run

    我向您推荐 GNU Parallel 在这个 CPU 变得“更胖”(更多内核)而不是更快的时代。

    【讨论】:

    • 非常有趣,谢谢。对于不熟悉 webp 的任何人(就像我一样),您可能首先需要安装以下软件包:sudo aptitude install parallel webp。对于具有正确扩展名的 webp 文件,只需执行 parallel dwebp {} -o {.}.png ::: *.webp
    【解决方案2】:

    如何在 Linux 上将 .webp 图像转换为 .png

    在 Linux Ubuntu 20.04 上测试

    这个问题是Google search of "linux convert .webp image to png" 的热门问题。因此,对于任何在这里跌跌撞撞并只想得到这个简单答案的人来说,这里是:

    # 1. Install the `webp` tool
    sudo apt update
    sudo apt install webp
    
    # 2. Use it: convert in.webp to out.png
    dwebp in.webp -o out.png
    

    完成!你现在有out.png

    参考文献

    1. 我从the question itself了解到dwebp

    【讨论】:

      【解决方案3】:

      我用的是不需要在系统中安装parallel 的短单线器

      for x in `ls -1 *.jpg`; do dwebp {} -o ${x%.*}.png ::: $x; done
      

      这适用于当前目录

      我会尝试修改@mark-setchell 递归解决方案,使其看起来像这样:

      for x in `find . -name "*.jpg"`; do dwebp {} -o ${x%.*}.png ::: $x; done
      

      ${x%.*} 部分是这里需要解释的部分——它告诉 bash 采用 . 以及 x 变量中点之后的所有内容。 由于我没有检查这里的正则表达式是懒惰还是贪婪,因此对于带有更多点的名称很容易出现行为不端 - 因此可以进一步调整答案。

      【讨论】:

      • 最好使用for x in *.jpg 而不是解析ls 的输出 - 请参阅mywiki.wooledge.org/ParsingLs
      • 你的命令中间都有多余的::: - 可能是 GNU Parallel 的剩余部分
      • @MarkSetchell 谢谢,TIL - 如果一切正常,将检查并修复答案,以便尽可能干净:)
      【解决方案4】:

      如果问题出在 linux 图像查看器上——这就是转换的原因——那么我发现:here

      "在 Ubuntu 和其他 Linux 中为 GNOME Image Viewer 添加 WebP 支持 默认情况下,照片查看器不支持 WebP 图像文件。但是,您可以通过安装 webp-pixbuf-loader 库来添加 WebP 支持。它不仅允许您在 GNOME Image Viewer 中打开 WebP 文件,还可以在文件资源管理器中显示 WebP 文件的缩略图。

      在基于 Ubuntu 的 Linux 发行版上,您可以使用 PPA 安装此库。一一使用以下命令:"

      sudo add-apt-repository ppa:krifa75/eog-ordissimo
      sudo apt update
      sudo apt install webp-pixbuf-loader
      

      【讨论】:

        【解决方案5】:

        最好将 sed 与 mv 一起使用。它匹配模式并替换为较新的模式。

        for file in *.jpg;
        do
           mv "$file" "`echo $file | sed s/.jpg/.png/`"
        done
        

        如果你想保留旧文件而不是 mv 你可以使用 cp

        【讨论】:

        • 完全没用。这些是不同的格式,更改扩展名是不够的。
        猜你喜欢
        • 2011-12-04
        • 1970-01-01
        • 2022-07-05
        • 1970-01-01
        • 2018-09-10
        • 1970-01-01
        • 2010-12-24
        • 2020-03-08
        • 2013-03-22
        相关资源
        最近更新 更多