如何从文件夹中删除低于特定分辨率的图片

问题描述 投票:0回答:3

我有一个或多或少随机图片文件的大文件夹,我用它来显示Wallch的桌面背景。因为我注意到有些图片的分辨率太低而不能看起来很好,所以我想摆脱低于1000像素的高度。

自从我最近开始使用Ubuntu以来,我怀疑这可以通过命令行中的几行代码来完成,但是我很缺乏使用它并希望避免任何过于灾难性的事情,因此在尝试我之前寻求帮助拥有。

这些图片总共大约4演出,大约3000张图片,大多以.png或.jpg结尾,但有时在.JPG中,其中一些在子文件夹中最多3个级别。

有什么建议?

shell command-line
3个回答
3
投票

您可以使用imagemagick及其identify命令。 http://www.imagemagick.org/script/identify.php

例如像bash函数这样的东西,它以文件名作为参数,调整minX和minY

function rmImgBySize
{
  minX=128
  miny=96
  xres=`identify -format "%[fx:w]" "$1"`
  yres=`identify -format "%[fx:h]" "$1"`
  if [ $xres -lt $minX ] || [ $yres -lt $minY ]
  then
    rm "$1"
  fi
}

export -f rmImgBySize

find /path/to/basedir/with/pictures/ -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" -exec bash -c 'rmImgBySize "$0"' "{}" \;

-iname告诉名字匹配应该是case Insensitive -o tell“or”

man identify
man find

4
投票

使用convert from ImageMagick

find -name '*.jpg' -o -name '*.png' -exec \
      convert "{}" -print "%w:%h:%d/%f\n" /dev/null \; | \
      awk -vFS=: '$1<680||$2<1000{print}' | \
      xargs rm

1
投票

使用identify from ImageMagick

identify -format "%w:%h:%f\n" * | awk -F : '$2<1000 {print $3}' | xargs rm

(PS:你必须在图片目录中运行此命令)

© www.soinside.com 2019 - 2024. All rights reserved.