Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Hast du dich jemals gefragt, wie du Bilder aus der Zwischenablage direkt in einen Befehl im macOS Terminal einfügen kannst? Hier ist die Lösung!
Von Haus aus funktioniert pbpaste
nur mit Textdaten. Wenn du also einen Teil eines Screenshots in deine Zwischenablage kopierst (mit CleanShot 😵) und dann den folgenden Befehl ausführst, erhältst du eine 0-Byte-Datei:
pbpaste > /tmp/screenshot.png
Dank einiger Hinweise von Feraidoon Mehri in einem GitHub-Issue und etwas Unterstützung durch ChatGPT und Claude 3 Opus habe ich das folgende Skript entwickelt.
#!/bin/zsh
# Einzigartigen temporären Dateinamen generieren
tempfile=$(mktemp -t clipboard.XXXXXXXXXX.png)
# Bild aus der Zwischenablage in die temporäre Datei speichern
osascript -e 'set theImage to the clipboard as «class PNGf»'
-e "set theFile to open for access POSIX file \"$tempfile\" with write permission"
-e 'write theImage to theFile'
-e 'close access theFile'
# Bilddaten an stdout ausgeben
cat \"$tempfile\"
# Temporäre Datei löschen
rm \"$tempfile\"
Speichere dieses Skript als ~/.local/bin/impaste
auf deinem Rechner (dieser Ordner muss in deinem $PATH
sein) und mache es ausführbar mit:
chmod 755 ~/.local/bin/impaste
Nun kannst du ein Bild in deine Zwischenablage kopieren und diesen Befehl ausführen:
impaste > /tmp/image.png
Oder du leitest die Ausgabe von impaste an jeden beliebigen Befehl weiter, der Bilder akzeptiert.
Sagen wir, du möchtest das Bild direkt zu einem Cloud-Speicher hochladen oder es in einem anderen Programm verwenden. Hier sind einige praktische Beispiele, wie du impaste nutzen kannst:
impaste | curl -F "image=@-" https://api.imgur.com/3/upload --header "Authorization: Client-ID YOUR_CLIENT_ID"
impaste | convert png:- -resize 50% resized_image.png
Diese Beispiele zeigen, wie du die Leistung von impaste
nutzen kannst, um Bilder aus der Zwischenablage in verschiedenen Kontexten weiterzuverarbeiten und zu verwenden.