Sono un po 'confuso dall'approccio su come comprimere correttamente le immagini con cui vuoi lavorare. Come accennato, c'è sips
, un esempio di lavoro basato sul tirare una directory di immagini e passare attraverso l'elenco con un ridimensionamento se la larghezza non è 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
Questo è solo un esempio di cosa puoi fare con la larghezza. Come accennato nel commento è possibile controllare per vedere quale è più lunga la larghezza o l'altezza e ridimensionare da lì. Se fai man sips
nel Terminale puoi estrarre tutti i tipi di informazioni. Il codice precedente utilizza la coda e taglia per tagliare il ritorno. Il ridimensionamento viene eseguito con --resampleWidth
. Puoi ricampionare in base all'altezza con --resampleHeight
.
Per quanto riguarda l'aspetto della compressione, se questi sono PNG puoi usare Optipng . Se desideri qualcosa che puoi utilizzare con PNG e JPG, puoi utilizzare Trimage . AppleScript / Automater può anche essere utilizzato per script in un'utilità di compressione. Dovresti solo chiamare da bin
un controllo se esiste una compressione:
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
Quanto sopra è il controllo di OptiPNG. Se vuoi controllare se qualcosa è stato installato con HomeBrew potresti usare un comando simile su /usr/local/Cellar
.
Tutto quanto sopra menzionato potrebbe essere completamente fatto in uno Shell Script. Dipende solo da cosa vuoi e come vuoi eseguire il codice.