Ich habe mich nach einer Automator-Methode umgesehen, bei der eine Bilddatei auf eine bestimmte Dateigröße (in Bytes) oder eine Nähe der unteren Grenze dieser Dateigröße in der Größe geändert (reduzierte Höhe und Breite) werden soll.
Es wäre eine großartige Verwendung für die Quick Actions von MacOS Mojave, da viele Website-Uploads beispielsweise keine iPhone-Bilder in voller Größe akzeptieren.
Meiner Intuition nach ist dies für Automator selbst mit Hilfe von Bash-Skripten usw. ein ziemlich schwieriges Problem. Normalerweise sind selbst Anwendungen wie Adobe Photoshop nicht gut darin, die endgültige Dateigröße vorherzusagen, nachdem eine Datei in JPG oder PNG komprimiert wurde. usw. Vielleicht könnte es die Bildabmessungen schrittweise verringern, bis es niedriger als die maximale Dateigröße ist. Am einfachsten wäre es, wenn es dafür ein skriptfähiges Dienstprogramm gäbe.
Ich dachte daher zu fragen, ob:
Ich bin ein wenig verwirrt über den Ansatz, wie Sie die Bilder, mit denen Sie arbeiten möchten, richtig komprimieren. Wie bereits erwähnt, gibt es sips
ein funktionierendes Beispiel, das darauf basiert, ein Verzeichnis mit Bildern zu ziehen und mit einer Größenänderung durch die Liste zu gehen, wenn die Breite nicht 800 Pixel beträgt:
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
Das ist nur ein Beispiel dafür, was Sie mit der Breite machen können. Wie im Kommentar erwähnt, können Sie überprüfen, welche Breite oder Höhe länger ist, und von dort aus die Größe ändern. Wenn Sie dies man sips
im Terminal tun, können Sie alle Arten von Informationen abrufen. Der obige Code verwendet tail und cut, um die Rückgabe zu kürzen. Die Größenänderung erfolgt mit --resampleWidth
. Sie können basierend auf der Höhe mit Resampling durchführen --resampleHeight
.
In Bezug auf den Komprimierungsaspekt können Sie Optipng verwenden, wenn es sich um PNGs handelt . Wenn Sie etwas möchten, das Sie mit PNGs und JPGs ausführen können, können Sie Trimage verwenden . AppleScript/Automater könnte auch per Skript zur Verwendung eines Komprimierungsdienstprogramms verwendet werden. bin
Sie müssten nur von einer Überprüfung aus anrufen, ob eine Komprimierung vorhanden ist:
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
Oben wird nach OptiPNG gesucht. Wenn Sie überprüfen möchten, ob etwas mit HomeBrew installiert wurde, können Sie einen ähnlichen Befehl für verwenden /usr/local/Cellar
.
Alle oben genannten können vollständig in einem Shell-Skript ausgeführt werden. Es hängt nur davon ab, was Sie wollen und wie Sie den Code ausführen möchten.
quoted form of
, wenn Sie mit Dateipfaden arbeiten. Dadurch werden Probleme mit Leerzeichen, Dateinamen mit Anführungszeichen und Escape-Zeichen vermieden.Sie könnten ein Shell-Skript schreiben, um das zu tun, was Sie wollen, und es in einen Automator-Workflow packen.
Nur in Automator ist dies nicht möglich. Automator fehlt die Verzweigungslogik, die erforderlich ist, um zu bestimmen, wann gestoppt werden soll.
Mir sind keine Abkürzungen bekannt, außer Bilder unterschiedlicher Größe zu skalieren und zu komprimieren, bis sie Ihr Ziel erreichen.
Dies kann mit integrierten Tools erfolgen, die in macOS enthalten sind, z. B. sips
zum Ändern der Bildgröße und bash
zum Skripten der Logik.
Eine eng verwandte Frage finden Sie unter Bilddateigröße auf bestimmte Größe reduzieren .
ʀ2ᴅ2
PFANNE