Comment copier une image dans le presse-papiers à partir de la ligne de commande sous Linux?


14

Je peux copier une image dans Gimp et la coller dans un document OpenOffice.

Comment faire (copier ou coller une image) depuis la ligne de commande?


Que signifie «coller depuis le presse-papiers depuis la ligne de commande»? Probablement le même mais uniquement pour la copie: unix.stackexchange.com/questions/30093/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:


5

Comme on le voit ici , la clé pour coller des données binaires dans un fichier xclipest de dire quels types de médias vous avez dans le presse-papiers. Pour PNG, vous pouvez:

xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"

Ou image/jpeget .jpgpour JPEG.

Alors maintenant, sur mon ~/Dropbox/.mybashrcj'ajoute un alias (clipboard2photo) pour coller facilement dans le fichier image (peut-être un jour nous l'aurons sur Nautilus ).


Comme indiqué dans le premier lien: REMARQUE: certaines recherches montrent que vous avez besoin de xclip à partir de la révision 81 de SVN (à partir d'avril 2010) ou version ultérieure pour avoir l'option -t requise. Ou appliquez vous-même les patchs .
i336_

7

Je crois que la raison pour laquelle le script Leo Alekseyev ne fonctionne pas parfois (sur certains systèmes) est expliquée dans cette réponse à une question similaire. Partie importante citée ici:

Une bizarrerie différente de la plupart des autres systèmes: si le programme propriétaire de la sélection (presse-papiers) disparaît, la sélection aussi.

Lorsque j'exécute le script de Leo dans un shell python, cela fonctionne, tant que le shell fonctionne. Je pense donc que les données du presse-papiers sont perdues lorsque le script est terminé. La solution affichée dans la réponse, fonctionne pour moi:

#!/usr/bin/env python
import gtk 
import sys

count = 0
def handle_owner_change(clipboard, event):
    global count
    print 'clipboard.owner-change(%r, %r)' % (clipboard, event)
    count += 1
    if count > 1:
       sys.exit(0)

image = gtk.gdk.pixbuf_new_from_file(sys.argv[1])
clipboard = gtk.clipboard_get()
clipboard.connect('owner-change', handle_owner_change)
clipboard.set_image(image)
clipboard.store()
gtk.main()

Mise à jour à partir de _Vi: pour être complet, ajouter le script de presse-papiers-> fichier:

#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os

clipboard = gtk.clipboard_get()
img = clipboard.wait_for_image()
img.save(sys.argv[1], "png", {})

C'est un peu ennuyeux de devoir le quitter manuellement, mais au moins ça marche :). Merci!
crazy2be

1

Le script python / pygtk suivant fait le travail:

#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os

def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    image = gtk.gdk.pixbuf_new_from_file(f)
    clipboard = gtk.clipboard_get()
    clipboard.set_image(image)
    clipboard.store()

copy_image(sys.argv[1]);

(Source: http://ubuntuforums.org/showthread.php?t=1689889 )

Pour l'utiliser sudo apt-get install python pygtk, collez le code ci-dessus dans un script, chmod +xpour le rendre exécutable, et vous devriez être prêt à partir.


Petite image png copiée à l'aide de ce script. Impossible de le coller ni dans OpenOffice ni dans Gimp ("Il n'y a pas de données d'image dans le presse-papiers à coller"). Ne marche pas. Après avoir copié l'image réelle dans Gimp et utilisé ce script, le tampon revient au texte précédent.
Vi.

J'ai juste essayé wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png:, où test.py est exactement ce qui est collé ici. Colle bien dans Gimp.
Leo Alekseyev

Testé avec Test.png. "Il n'y a pas de données d'image à coller dans le presse-papiers". Cela dépend-il de l'exécution de Gnome? Comment déboguer ça? Je peux copier avec succès l'image dans Gimp et coller dans Openoffice, donc en général, la copie fonctionne.
Vi.

E: Impossible de localiser le package pygtk
qed
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.