30

Is it possible to take an image from the clipboard and output it to a file (using X)?

I can do this with text easily:

$ xclip -selection c -o > file.text

But when I try the above with an image nothing is written.


The reason I want to do this is I don't have an image editor installed, and it got me thinking whether I could do this without installing one.

52

You can actually do this with xclip. The secret is the -t option, which refers you to the ICCCM Section 2.6.2. Which I confess I don't blame you for failing to read... Anyway, an example, I have just right-clicked your avatar in Chromium and selected "Copy Image":

  1. See what targets are available:

    $ xclip -selection clipboard -t TARGETS -o
    TARGETS
    image/png
    text/html
    
  2. Note the image/png target; go ahead and get it:

    $ xclip -selection clipboard -t image/png -o > /tmp/avatar.png
    $ see /tmp/avatar.png    # yep, that's it
    

NOTE: Some research shows that you need xclip from SVN revision 81 (from April 2010) or later to have the required -t option. Or apply the patches yourself.

  • I am using 0.12, the one that is offered by pacman so I shall have to get the upstream version. Thanks! – Lerp Jul 21 '14 at 8:23
  • Error: target image/png not available this be old. Debian stretch – Stígandr Nov 14 '16 at 15:45
  • @Stígandr I confirmed this still works on my machine running Debian testing (stretch). Maybe you copied a JPEG or some other type of image? Probably best to ask a new question rather than debug it in comments. – derobert Nov 14 '16 at 16:21
3

xclip doesn't work with images on my computer (svn84-4) :

$ xclip -selection clipboard -t image/png -o
Error: target image/png not available

But there is another program which take screenshot and paste it into a file, very simply : scrot :

scrot /tmp/myImage.png

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.