Tôi hơi bối rối với cách tiếp cận về cách nén đúng hình ảnh bạn muốn làm việc. Như đã đề cập, có sips
một ví dụ hoạt động dựa trên việc kéo một thư mục hình ảnh và bước qua danh sách với kích thước thay đổi nếu chiều rộng không phải là 800px:
property theWidth : 800
tell application "Finder"
try
## Choose directory
set imageDir to choose folder with prompt "Please select directory."
## Get list of items in diretory
set the imageList to list folder imageDir without invisibles
## Step through images
repeat with theImage in imageList
## Turn path to posix path
set imagePos to quoted form of POSIX path of ((imageDir as text) & contents of theImage)
## Get image width
set imgWidth to (do shell script "sips -g pixelWidth " & " " & imagePos & " " & "| tail -n1 | cut -d' ' -f4") as integer
## if not equal to set variable width resize
if imgWidth ≠ theWidth then do shell script "sips --resampleWidth " & theWidth & " " & imagePos
end repeat
on error error_message
display dialog error_message
end try
Đó chỉ là một ví dụ về những gì bạn có thể làm với chiều rộng. Như đã đề cập trong bình luận, bạn có thể kiểm tra xem cái nào dài hơn chiều rộng hoặc chiều cao và thay đổi kích thước từ đó. Nếu bạn làm man sips
trong Terminal, bạn có thể lấy tất cả các loại thông tin. Đoạn mã trên sử dụng đuôi và cắt để cắt trả lại. Thay đổi kích thước được thực hiện với --resampleWidth
. Bạn có thể lấy mẫu lại dựa trên chiều cao với --resampleHeight
.
Về khía cạnh nén, nếu đây là các PNG bạn có thể sử dụng Optipng . Nếu bạn muốn một cái gì đó bạn có thể chạy với PNG và JPG, bạn có thể sử dụng Trimage . AppleScript / Automater cũng có thể được viết kịch bản bằng cách sử dụng tiện ích nén. Bạn sẽ chỉ cần gọi từ bin
kiểm tra nếu nén tồn tại:
try
set checkBin to "(ls usr/local/bin/optipng >> /dev/null 2>&1 && echo yes) || echo no"
return do shell script checkBin
on error error_message
return error_message
end try
Trên đây là kiểm tra OptiPNG. Nếu bạn muốn kiểm tra thời tiết, một cái gì đó đã được cài đặt với HomeBrew, bạn có thể sử dụng một lệnh tương tự trên /usr/local/Cellar
.
Tất cả những điều được đề cập ở trên có thể được thực hiện hoàn toàn trong Shell Script. Nó chỉ phụ thuộc vào những gì bạn muốn và cách bạn muốn thực thi mã.