Bar*_*tek 8 command-line software-recommendation display-resolution
哪个程序具有按像素大小/分辨率/尺寸对图像进行排序的功能。
很奇怪,但即使如此强大的 DigiKam 也没有这么简单的功能。
有什么建议?
我不知道这是如何执行的,但 ImageMagick 有一个identify应用程序,我必须在过去十分钟内学习。比什么都好,它有一个-format你可以做数学的论点!
find -iname '*.jpg' -exec identify -format "%[fx:w*h] %i\n" {} \+ | sort -g
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果您超过某个大小,您将获得科学记数法(例如 1.2*10^3)而不是从标识返回的整数。幸运的是 sort 有一个-g参数可以解析它们。
在此处的相同文件中,此版本(不分叉到 Perl)仅占用 Perl 版本的 60% 的时间。这并不是说 Perl 很慢,但进入 perl 并退出是不必要的复杂化,它会减慢速度(我认为)。
我的还是不理想。需要将数字解析回整数进行排序相当慢。理想情况下,您会在一种语言中在内部执行所有这些操作,其中大小始终保持为整数……但以上是我能做的最短、最清晰的单行。
如果您正在寻找命令行工具,以下命令将对最高分辨率的图像文件进行排序:
find . -iname "*.png" -o -iname "*.jpg" | perl -e '$f=sub{eval(`identify -format %w*%h ${\quotemeta(shift)} 2>/dev/null`)};print sort{$f->($b)<=>$f->($a)}<>'
Run Code Online (Sandbox Code Playgroud)
我基本上是使用perl sort子子程序对文件进行排序,这里的关键是调用identify命令并评估其格式化输出。
identify随imagemagick包提供:
sudo apt-get install imagemagick
Run Code Online (Sandbox Code Playgroud)
更新:
以下命令还将输出分辨率:
find . -iname "*.png" -o -iname "*.jpg" | perl -e '$f=sub{`identify -format %w*%h ${\quotemeta(shift)} 2>/dev/null`};chomp&&print "$_\t".$f->($_) for sort{eval($f->($b))<=>eval($f->($a))}<>'
Run Code Online (Sandbox Code Playgroud)
例子:
./foo bar.png 1600*900
./baz.png 1600*900
./img_0004.jpg 1280*720
./img_0006.jpg 1280*720
./img_0001.jpg 1280*720
./img_0003.jpg 1280*720
./img_0002.jpg 1280*720
./img_0005.jpg 1280*720
./launcher.png 385*632
./textfield.png 402*329
./foo2.png 202*229
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3873 次 |
| 最近记录: |