Làm thế nào để sắp xếp hình ảnh vào các thư mục, dựa trên độ phân giải?


9

Bối cảnh: Tôi đã có một thư mục chứa đầy ảnh máy tính để bàn. Tôi muốn đặt chúng vào các thư mục, dựa trên độ phân giải của chúng - 1024x768, v.v. Tạo thư mục khi đang di chuyển là một phần thưởng. Hiện tại, các hình ảnh đều nằm trong một thư mục, nhưng một số trong số chúng nằm trong các thư mục phụ. Tôi có thể hợp nhất chúng bằng tay, nếu điều đó làm cho mọi thứ dễ dàng hơn.

Tôi thích thiết bị đầu cuối hơn, mặc dù tôi vẫn là một người mới chơi bash. Tôi thực sự không phải là một lập trình viên nhiều.

Tôi đang sử dụng Mac OS X, nhưng tôi không phản đối việc cài đặt các ứng dụng bổ sung để thực hiện việc này (MacPorts?) Hoặc thậm chí sử dụng một HĐH khác (tôi đã cài đặt Windows XP, Windows Vista và Ubuntu 9 ngay bây giờ trong VMWare ).

Bất kỳ trợ giúp sẽ được đánh giá cao! Cảm ơn bạn!

Câu trả lời:


11

Tôi biết đó là một chủ đề hơn một năm (xin lỗi về điều đó) nhưng tôi nghĩ ai đó có thể cần kịch bản làm việc đầy đủ, vì vậy đây là. Lấy ý tưởng ở đây và biên soạn thành một kịch bản chúng ta có được.

#!/bin/bash

for image in *.jpg;
    do res=$(identify -format %wx%h\\n $image);
    mkdir -p $res;
    mv $image $res;
done

4

Nghiêm túc, cảm ơn vì đã trả lời, tất cả mọi người! Tôi đã trở lại vấn đề này, nhiều kinh nghiệm hơn và hầu hết các ý kiến ​​ở đây có ý nghĩa hơn bây giờ.

Tôi đã điều chỉnh kịch bản của @ zatatlan một chút để phù hợp với khoảng trắng trong tên tệp và để thêm các phần mở rộng tệp.

#!/bin/bash

shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG;
    do res=$(identify -format %wx%h\\n "$image");
    mkdir -p $res;
    mv "$image" $res;
done

3

Có thể sử dụng ImageMagick để phát hiện độ phân giải hình ảnh . Gói nó trong một vòng lặp bash và bạn đi. Tôi sẽ không đợi cho đến khi tôi trở về nhà với vỏ bash, vì vậy đây là thứ gì đó nằm ngoài đầu tôi. Cú pháp có thể sai, nhưng nó có thể cung cấp cho bạn một số manh mối.

for image in $(`*.jpg`) do
   res=`identify $image | grep -o 'Resolution:'`
   if [ ! -d $res ]; then
     mkdir $res
   fi

   mv $image $res
done

Kịch bản tạo thư mục một cách nhanh chóng. Cả bash và fantemagick đều có sẵn cho mac.


Bạn có thể làm cho tập lệnh ngắn hơn một chút và đơn giản hơn bằng cách thay thế ifkhối bằng một đơn giản mkdir -p $res.
Ryan C. Thompson

2

Amok EXIF ​​Sắp xếp

AmoK Exif Sorter có thể đổi tên ảnh và di chuyển hoặc sao chép chúng vào các thư mục tùy ý.
Các thư mục có thể được đặt tên theo dữ liệu exif.

Cung cấp bản xem trước trực tiếp tên tệp, hình ảnh và dữ liệu exif tích hợp, kéo và thả, xem hình thu nhỏ, kiểm tra cập nhật tự động và cấu hình cho các máy ảnh và người dùng khác nhau.

Cũng hỗ trợ các tệp Video theo ngày tạo, các tệp được định dạng IPTC.

Viết bằng JAVA , hoạt động trên tất cả các nền tảng hỗ trợ JRE5.
Kiểm tra danh sách tính năng trên liên kết.

Đừng nản lòng với tiếng Đức.
Kéo xuống Sprachevà chọn Englisch, khởi động lại ứng dụng.


1

Lệnh xác định ImageMagick có thể cung cấp cho bạn chiều rộng và chiều cao tính bằng pixel, ví dụ:

~$ identify -format %w_%h\\n *jpg 
2868_3429
1056_960

Bạn có thể đặt tập lệnh đó vào tập lệnh bash như một phần của vòng lặp for và để an toàn, hãy sao chép các tập tin vào một thư mục có tên giống như độ phân giải (kiểm tra xem nó có tồn tại và tạo không nếu không).


0

Một cách cơ bản sẽ đưa ra thứ tự giải quyết sơ bộ là tổ chức theo kích thước tệp. Đây là thứ nên được tích hợp vào bất kỳ HĐH nào, vì vậy bạn không cần bất cứ điều gì đặc biệt. Điều hấp dẫn với điều này là định dạng cho ảnh của bạn sẽ giống với định dạng này để hoạt động. Đây không phải là một giải pháp hoàn hảo, nhưng nó có thể là một khoảng cách dễ dàng cho đến khi bạn tìm thấy thứ gì đó thực sự phù hợp với dự luật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.