Permalink

macOS Tipp: sips · scriptable image processing system

Vor knapp zwei Wochen hatte ich an dieser Stelle meinen Workflow für die Komprimierung von Bildern genauer vorgestellt.

Heute möchte ich einen Schritt zurückgehen. Denn bevor ich Bilder komprimiere, passe ich in der Regel deren Größe an. Hier gibt es natürlich unzählige Möglichkeiten. Wieder angefangen von Bildbearbeitungsprogrammen wie Pixelmator (Pro), Acorn oder Affinity Photo bis hin zu Apples Vorschau App.

Bildschirmfoto 2018-05-07 um 13.16.32-minishadow-fs8

Eine weitere macOS interne Lösung, die vielleicht nicht so bekannt ist, bietet sich mit sips an. Dabei handelt es sich um ein von macOS mitgeliefertes Kommandozeilentool, das in den man pages wie folgt beschrieben ist:

This tool is used to query or modify raster image files and ColorSync ICC profiles.  Its functionality can also be used through the „Image Events“ AppleScript suite.

Eines der Features dieses Tools betrifft eben die Manipulation der Bildgröße. Man benötigt im Prinzip nur ein einziges Terminalkommando und kann eine Vielzahl von Bildern (innerhalb eines Verzeichnisses) gleichzeitig in der Bildgröße anpassen. Dazu läuft der ganze Prozess extrem schnell ab.

sips -Z 1300 *.png

Bildschirmfoto 2018-05-07 um 13.40.12-minishadow-fs8

Der Schlüssel liegt in der –Z Option, bei der die maximale Bildgröße (in Pixeln) für Höhe oder Breite verändert wird. Das Seitenverhältnis vom Bild wird dabei nicht verändert.

-Z pixelsWH
--resampleHeightWidthMax pixelsWH
Resample image so height and width aren't greater than specified size.

Dazu bietet sips etliche weitere Optionen. So kann man Bilder beispielsweise zuschneiden, rotieren, spiegeln, auffüllen (padding), in ein anderes Format konvertieren oder das Farbprofil anpassen.

Letztere sind auf dem Mac unter /System/Library/ColorSync/Profiles/ abgelegt. Über die –out Option hält man sips zudem vom Überschreiben der Originaldatei ab.

sips -m '/System/Library/ColorSync/Profiles/sRGB Profile.icc' bild_cmyk.jpg --out bild_rgb.jpg

Diese ganzen Kommandos bzw. Aufgaben lassen sich natürlich auch automatisieren. Dabei wird die komplette sips-Architektur per AppleScript gesteuert.

Beispiel:

Man markiert zunächst eine oder mehrere Bilder im Finder. Jetzt startet man das Skript, das die maximale Bildgröße (in Pixeln) für die Höhe bzw. Breite per Dialog abfragt. Der Standardwert liegt bei 1.300 Pixeln.

Anschließend wird ein (Ziel-)Verzeichnis mit dem eingegebenen Pixelwert erstellt, in dem schlussendlich die mit der –Z (Bildgröße) und -m Option (Farbprofil) bearbeitete Bilddatei landet.

Bildschirmfoto 2018-05-07 um 15.57.69-minishadow-fs8

Ich selbst nutze dieses Skript natürlich über Keyboard Maestro. Man kann es aber auch über den Automator steuern.

Als Vorlage dafür diente übrigens ein etwas älterer Artikel bei macgrunt. In dem dort gezeigten Skript wird explizit zwischen Breite und Höhe des Bildes unterschieden, was für meine Belange aber nicht von Bedeutung ist. Daher meine etwas vereinfachte Version.

(inspired by)

Permalink

mas-cli · Command Line Interface für den Mac App Store

Der Mac App Store ist immer dann ein Segen, wenn man zur Installation von Software nur einen Knopf drücken und sich nicht großartig auf die Suche nach zugehörigen Lizenzen begeben muss.

Um dieses ganze Prozedere zu automatisieren, was gerade beim Aufsetzen eines neuen Macs interessant ist, möchte ich heute mas-cli vorstellen.

mas-cli-fs8

Mit diesem kostenlosen Tool, das entweder über Homebrew oder einer entsprechenden Binärdatei installiert wird, kann man den Mac App Store (mit einigen Einschränkungen) über das Terminal steuern.

brew install mas

Die Anwendung des Tools ist denkbar einfach. Dazu muss man allerdings wissen , dass jede App im Mac App Store über eine eindeutige Produkt-ID gekennzeichnet ist.

Möchte man beispielweise über mas list sämtliche auf seinem Mac installierte “MAS-Apps” ausgeben, wird genau diese ID  vor dem Namen und der Versionsnummer angezeigt.

Bildschirmfoto 2018-03-13 um 20.04.05-minishadow_1300px-fs8

Über mas outdated werden alle Apps angezeigt, für die ein Update zur Verfügung steht.

Das eigentliche Update/Upgrade wird über mas upgrade angestoßen.

 

Man kann natürlich auch Apps nach Namen suchen. Hierfür steht der Befehl mas search <Name der App> bereit.

Die Installation von Apps wird über mas install <Produkt-ID> gesteuert.

Dieses Installationskommando funktioniert allerdings nur, wenn man die App bereits über den MAS gekauft hat. Erstmalige Downloads bzw. Käufe müssen daher weiterhin direkt im Store erfolgen.

Bildschirmfoto 2018-03-13 um 20.08.08-minishadow_1300px-fs8

Es gibt noch eine Handvoll weiterer Kommandos, für die ich gerne auf die Produktseite bei GitHub verweise.

Schön ist auf jeden Fall die Integration von mas-cli mit Homebrew Bundle. Auf diese Weise kann die Installation bzw. das Upgrade aller gewollten Apps aus Homebrew, Homebrew Cask und eben dem Mac App Store über eine einzige Textdatei automatisiert werden.

-> https://github.com/mas-cli/mas

Permalink

OpenTerm · Open Source Terminal für das iPhone und iPad

Falls bei jemandem schon mal der Wunsch nach einer nativen Kommandozeile in iOS aufgekommen ist, sollte der Blick in Richtung OpenTerm gehen.

Derzeit werden knapp 50 Terminalkommandos unterstützt, die über eine Tastaturerweiterung jederzeit (scrollbar) zum Schnellzugriff eingeblendet werden.

Datei 06.02.18, 10 07 17_1300px

Da die App darüber hinaus sandboxed ist, können selbst Leute die nicht so erfahren im Umgang mit dem Terminal sind, relativ sicher erste Schritte wagen und nicht wirklich etwas kaputt machen.

Gerade im Zusammenspiel mit Apples Dateien-App (Strichwort: Splitscreen) und dem iCloud Drive ergeben sich hier einige interessante Möglichkeiten.

Der Quellcode von OpenTerm ist bei GitHub zu finden. Die App selbst wird über den iOS App Store verteilt und setzt ein iPhone oder iPad mit iOS 11 oder neuer voraus.

[appbox appstore 1323205755 simple]

Permalink

Etcher · Image-Dateien zum Booten auf USB-Sticks oder SD-Karten brennen

Hin und wieder kann es vorkommen, dass man von einem USB-Stick, einer SD-Karte oder anderen (auswerfbaren) Laufwerken eine darauf gebrannte Image-Datei booten möchte.

Für dieses Vorhaben sind in der Regel Boardmittel ausreichend, die allerdings tieferes Terminalwissen voraussetzen. Wer darauf keine Lust hat, sollte sich Etcher genauer ansehen.

screenshot-minishadow_1300px

Etcher ist eine open source Software, die für macOS, Linux und Windows angeboten wird und sich mit einer sehr einfachen Oberfläche vom Terminal-Gehacke absetzt.

Das Tool unterstützt verschiedene Image Formate wie beispielsweise ISO, IMG, RAW, BZ2, DMG oder auch ZIP. Der ganze Prozess ist vom Auswählen des Images bzw. des Ziellaufwerkes und dem schlussendlichen Brennen in drei einfache Schritte unterteilt. Am Ende validiert Etcher das Ergebnis, um sicherzustellen, dass alles korrekt funktioniert.

Darüber hinaus wird auch ein experimentelles Kommandozeilen Tool angeboten. Der Quellcode von Etcher ist bei GitHub zu finden.

-> https://etcher.io

Permalink

iStats · Systemmonitor für das macOS Terminal

Möchte man die Daten seines Systems immer im Blick haben, hatten wir hier mit iStat Menus, iStat Mini, Monity, Monit, den Today Scripts oder dem guten alten GeekTool schon diverse Systemüberwachungstools für den Mac vorgestellt.

Lebt man allerdings mehr oder weniger in der Kommandozeile, kann iStats ganz interessant sein. Dabei handelt es sich um eines der ausführbaren RubyGems, die man in macOS auf verschiedene Art und Weisen installieren kann. Ich möchte nachfolgend die Variante über Homebrew zeigen.

rubygems

Ist Brew installiert, wird zunächst neue Version von Ruby benötigt.

Das ist insofern wichtig, als dass man sich so von der von macOS bereitgestellten Ruby-Version löst und somit zur Installation der Gems keine Admin-Rechte mehr benötigt.

brew install ruby

Anders als brew kann gem, ein Kommando, das zur Installation von RubyGems gebraucht wird, per default keine Aliase im Verzeichnis /usr/local/bin erzeugen. Genau das möchte ich aber, um das System einigermaßen ‘sauber’ zu halten.

Daher muss die PATH-Umgebungsvariable angepasst bzw., wenn nicht eh schon geschehen, um /usr/local/bin erweitert werden. Je nach eingesetzter Shell muss man nun die entsprechende Konfigurationsdatei editieren; in meinem Fall ZSH bzw. ~/.zshrc

vim .zshrc

Folgende Zeile muss eingefügt werden:

export PATH="/usr/local/bin:$PATH"

Bildschirmfoto 2017-04-28 um 13.45.23-minishadow_1300px

Nun folgt die Installation von iStats, welche jetzt durch das Setzen der Umgebungsvariable automatisch ein Alias in /usr/local/bin erzeugt und durch die anfangs separat installierte Version von Ruby auch ohne sudo-Kommando auskommt.

gem install iStats

Um sich nun die Daten seines Systems im Terminal anzeigen zu lassen, startet man iStats durch Eingabe des Befehls istats.

Bildschirmfoto 2017-04-26 um 22.13.17-minishadow

Ohne dem Hinzufügen zusätzlicher Optionen werden zunächst einmal nur die Temperatur der CPU und Angaben zu den Lüftern bzw. dem Akku angezeigt.

Mit istats scan kann aber unzählige weitere Sensoren des Macs auslesen und mit istats enable [key] der Anzeige hinzufügen. Eine genaue Übersicht dieser und weiterer Optionen gibts bei GitHub.

-> https://github.com/Chris911/iStats