Skip to content

Instantly share code, notes, and snippets.

@joshcangit
Forked from orschiro/Image Clipboard Filer.md
Last active September 19, 2020 10:21
Show Gist options
  • Save joshcangit/6e16e817033f4d820e19d6387957f09f to your computer and use it in GitHub Desktop.
Save joshcangit/6e16e817033f4d820e19d6387957f09f to your computer and use it in GitHub Desktop.
Python script that saves an image from clipboard to a file.

Introduction

Saves an image from clipboard to a file.

Dependencies:

  • python3
  • PyGTK

Installation

Download image-clipboard-to-file.py and run it with python image-clipboard-to-file.py.

Note: Some distributions such as Arch Linux renamed Python 3 to python3 instead of python.

Arch Linux users can install the image-clipboard-to-file package from the AUR.

This version is not reflected in the AUR package, which requires python2 instead. It is simply converted using 2to3.

Credits

Thanks to Paweł Pałucha who posted this script on this stackoverflow discussion. I share it here to allow package maintainers to easily package it for their distribution.

#!/usr/bin/python3
"""
Save image from clipboard to file
"""
import sys
import glob
from optparse import OptionParser
def def_file():
"""
Return default file name
"""
files = glob.glob("img???.png")
if len(files) < 1:
return 'img001.png'
maxf = 0
for f in files:
try:
n = int(f[3:6])
maxf = max(n, maxf)
except ValueError:
pass
return 'img{:03d}.png'.format(maxf+1)
usage = """%prog [option] [filename]
Save image from clipboard to file in PNG format."""
op = OptionParser(usage=usage)
op.add_option("-o", "--open", action="store_true", dest="open", default=False,
help="Open saved file with default program (using xdg-open)")
(options, args) = op.parse_args()
if len(args) > 1:
parser.error("Only one argument expected")
sys.exit(1)
elif len(args) == 1:
fname = args[0]
else:
fname = def_file()
import gtk
clipboard = gtk.clipboard_get()
image = clipboard.wait_for_image()
if image is not None:
image.save(fname, "png")
print("PNG image saved to file", fname)
if options.open:
import subprocess
subprocess.call(["xdg-open", fname])
else:
print("No image in clipboard found")
sys.exit( 1 )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment