11 votes

Aperçu de l'image à partir du tuyau

J'ai un utilitaire en ligne de commande, appelons-le : produce_image. Ainsi je peux faire ce qui suit dans le terminal :

$ produce_image > some.jpg
$ open some.jpg #ouvre Preview.app

De plus, j'ai ImageMagick installé et Xqartz aussi, donc je peux faire ce qui suit :

$ produce_image | display #le display est une commande de la suite ImageMagick

Cela ouvre une fenêtre X11 avec l'image.

Est-il possible d'obtenir une vue d'image similaire à celle de display avec Preview.app également ? Par exemple, en cherchant quelque chose comme :

$ produce_image | Preview.app #bien sûr, cela ne fonctionne pas
$ produce_image | /Applications/Preview.app/Contents/MacOS/Preview #ni cela non plus

Est-il possible de prévisualiser l'image avec Preview.app sans utiliser de fichier intermédiaire ?

Ps : bien sûr, je peux créer une commande telle que osxdisplay

tmpfile=$(mktemp /tmp/foobar.XXXXXX)
cat - > "$tmpfile"
open "$tmpfile"
rm -f $tmpfile

et l'utiliser comme

produce_image | osxdisplay

Mais le mérite de la question est d'ouvrir des images à partir d'un tube de shell sans fichiers intermédiaires.

14voto

nohillside Points 82672

Essayer

produce_image | open -a Aperçu.app -f

(Pour être honnête, j'ai été assez surpris d'apprendre que cela fonctionne)

0 votes

SUPER! Fonctionne! MERCI! :) (Où est-ce documenté ?)

0 votes

J'ai jeté un coup d'œil à man open puis je suis allé voir si -f fonctionne également pour les documents non textuels. Tara!

0 votes

Je suis simplement aveugle! :( J'ai un peu raté le _-f*_ Lit l'entrée de la saisie standard et ouvre les résultats dans l'éditeur de texte par défaut. Merci encore, tu es LE Grand!

2voto

nisetama Points 894

Cela affiche les données de l'image à partir du STDIN dans le terminal dans iTerm 2 (https://www.iterm2.com/documentation-images.html):

cat file.png|printf "\e]1337;File=inline=1:$(base64)\a\n"

La fonction ci-dessous affiche une ou plusieurs images dans le terminal.

ima(){ local f;for f;do printf "\e]1337;File=inline=1:$(if [[ $f = *://* ]];then curl -Ls "$f";else cat -- "$f";fi|base64)\a\n";done;}

Pour afficher des images avec une hauteur maximale de 20 lignes, ajoutez ;height=20.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X