Chà, cách dễ nhất để làm điều này là sử dụng ImageMagick . Nó nên có trong kho lưu trữ phân phối Linux của bạn, cho các hệ thống dựa trên debian, chạy:
sudo apt-get install imagemagick
Một trong những chương trình của bộ ImageMagick là identify
, phần này sẽ in các đặc điểm của danh sách các tệp hình ảnh đầu vào. Kết hợp nó với sort
sẽ cung cấp cho bạn một danh sách các hình ảnh được sắp xếp theo kích thước (bạn có thể thay đổi png cho bất kỳ tiện ích mở rộng nào bạn có:
identify *png | sort -gk 3
Nếu bạn thực sự cần tỷ lệ khung hình và không chỉ kích thước, hãy thử một cái gì đó như thế này:
Tùy chọn đơn giản, giả sử tên hình ảnh của bạn không có khoảng trắng :
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | \
sed 's/\[.\]//' | sort -gk 3
Lệnh gawk chia trường thứ 3 (kích thước hình ảnh có định dạng LxH) thành mảng "kích cỡ" và sau đó in trường thứ 1 (tên hình ảnh) và kết quả chia chiều dài của hình ảnh cho chiều cao của nó. Các sed
lệnh chỉ là làm đẹp đầu ra và các sort
lệnh sắp xếp kết quả theo tỷ lệ kích thước hình ảnh.
Phức tạp hơn, cái này có thể xử lý khoảng trắng trong tên tệp:
find . \( -iname "*png" -o -iname "*jpg" -o -iname "*gif" \) -exec identify {} \; |\
perl -ne '/(.+?)\s+[A-Z]{3}\s+(\d+)x(\d+)/; print "$1 ", $2/$3, "\n"' | \
sort -gk 2
Ở đây chúng tôi đang sử dụng find
để xác định các tệp mà chúng tôi quan tâm và chạy identify
lệnh, sau đó chuyển đầu ra của nó thông qua một tập lệnh PERL nhỏ. Biểu thức chính quy tìm ba chữ cái in hoa ( [A-Z]{3}
) phải là định dạng hình ảnh. Khi chúng tôi đã tìm thấy điều đó, thật dễ dàng để xác định tên và kích thước hình ảnh.
Tôi không sử dụng gawk ở đây vì sự hiện diện của khoảng trắng trong tên tệp đầu vào sẽ gây nhầm lẫn cho các số trường. Cuối cùng, tập lệnh sẽ in ra tên của hình ảnh và kết quả của việc phân chia chiều dài / chiều cao mà chúng tôi sort
tính bằng số.
Nếu chỉ đơn giản duyệt các tỷ lệ khung hình khả dụng là không đủ, nếu bạn có ít nhất một hình ảnh với tỷ lệ khung hình mong muốn, chỉ cần sử dụng grep để trích xuất những hình ảnh có tỷ lệ gần nhất:
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' |\
sed 's/\[.\]//' | sort -gk 3 | grep -C 10 GOOD_IMAGE.jpg
identify -format "%[fx:w/h]:%M\n" *.jpg
. Tôi không biết làm thế nào để dễ dàng sắp xếp theo khoảng cách gần với một giá trị tùy ý.sort
dường như không hỗ trợ sắp xếp như vậy.