Làm thế nào để Automator hoặc Applescript có thể xoay 500.000 hình ảnh trong các thư mục và thư mục con?


2

Tôi có câu hỏi rất cụ thể.

Tôi đã có 500.000 hình ảnh nằm trong 98 thư mục con. Một số thư mục con chứa 25.000 hình ảnh.

Có bất kỳ quy trình làm việc script / automator mà tôi có thể sử dụng?

Tôi đã cố gắng tạo ra một quy trình công việc:

  1. Yêu cầu các mục Finder
  2. Nhận nội dung thư mục (đánh dấu lặp lại cho mỗi thư mục con được tìm thấy)
  3. Xoay hình ảnh

Nó hoạt động tốt, nhưng chỉ với những thư mục có ít hơn 4.096 tệp: Tôi thường nhận được thông báo lỗi sau:

Rotate images failed - 1 error too many arguments (12019) -- limit is 4096

Có cách nào để tăng giới hạn này hoặc tạo tập lệnh apple hoàn toàn khác nhau không? Tôi thực sự hy vọng rằng ai đó sẽ giúp tôi với điều này.

Câu trả lời:


3

Nếu bạn không bị ràng buộc sử dụng Automator hoặc AppleScript, chỉ cần sử dụng ImageMagick thông qua trình bao. Bạn có thể cài đặt ImageMagick thông qua MacPorts , Homebrew hoặc bản phân phối chính thức .

Để làm điều này, chúng tôi sẽ gọi find. Nếu bạn muốn xem tên của hình ảnh trước, trước khi thực sự chuyển đổi chúng, hãy chèn một echogiữa -execdirconvert.

Đây là lệnh:

find /some/path/ -type f -iname "*.jpg" -execdir convert {} -rotate 90 rot_{} \;

Điều này sẽ đệ quy

  • Tìm kiếm /some/path
  • cho các tập tin
  • với cái tên *.jpg
  • gọi converttừ ImageMagick, với đường dẫn làm việc được đặt thành một ( execdir)
  • xoay 90độ
  • lưu chúng dưới rot_+ tên tệp gốc

findsẽ gọi convertriêng cho từng hình ảnh, nên thực sự có bao nhiêu tệp.


0

Bạn chỉ có thể sử dụng từng ngụm ...

Giả sử mọi tệp trong các thư mục là một tệp hình ảnh:

set mainFolder to POSIX path of (path to desktop as text) & "My Folder"
do shell script "find " & quoted form of mainFolder & " \\! -name \".*\" -type f -print0 | xargs -0 sips -r 90"

0

Bạn có thể sử dụng jpegtran để xoay hình ảnh một cách dễ dàng. Nó có thể được cài đặt với brew install libjpeg.

IFS=$'\n'
for f in $(find ~/Folder -iname '*.jpg'); do
    /usr/local/bin/jpegtran -rotate 90 "$f" > "$f.temp"
    [[ $? == 0 ]] && mv "$f.temp" "$f" || echo "$f"
done

0

Một lựa chọn khác là Hazel . Bạn nói với Hazel những thư mục (và thư mục con) cần kiểm tra, thiết lập các tiêu chí cho các tệp được xử lý và các hành động cần thực hiện (bao gồm tập lệnh, tập lệnh shell và quy trình công việc) và Hazel thực hiện phần còn lại.

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.