How to copy a picture to clipboard from command line in linux?
I can copy image in Gimp and paste it to OpenOffice document.
How to do it (copy or paste image) from command line?
Solution 1:
As found here, the key to paste binary data to a file with xclip
is to tell what Media Types you have on clipboard. For PNG you can:
xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"
Or image/jpeg
and .jpg
for JPEG.
So now on my ~/Dropbox/.mybashrc
I add an alias (clipboard2photo) to easly paste to image file (maybe someday we'll have it on Nautilus).
Solution 2:
I believe the reason why Leo Alekseyev script does not work sometimes (on some systems) is explained in this answer to a similar question. Important part quoted here:
One oddity that is different from most other systems: if the program owning the selection (clipboard) goes away, so does the selection.
When i run Leo's script in python shell, it is working, as long as the shell is running. So i think the clipboard data is lost, when the script is terminated. The solution posted in the answer, is working for me:
#!/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()
Update from _Vi: For completeness, adding the clipboard->file script:
#!/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", {})
Solution 3:
The following python/pygtk script does the job:
#!/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)
To use this, sudo apt-get install python pygtk
, paste the above code into a script, chmod +x
to make executable, and you should be good to go.