Skip to content

Instantly share code, notes, and snippets.

@patarapolw
Created October 16, 2018 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patarapolw/1995a8e7eb97fe1620ae0f9c913390b1 to your computer and use it in GitHub Desktop.
Save patarapolw/1995a8e7eb97fe1620ae0f9c913390b1 to your computer and use it in GitHub Desktop.
Simple image server in Python, for use in Jupyter Notebook, markdown, local website. Can also be adapted for viewing PDF with pdf.js
import subprocess
from pathlib import Path
from datetime import datetime
from PIL import ImageGrab
import atexit
from urllib.parse import quote
class Server:
def __init__(self, root, port=14074):
self.root = root
self.port = port
self.server = subprocess.Popen([
'python', '-m',
'http.server',
'-d', self.root,
str(self.port)
])
atexit.register(self.close)
def close(self):
self.server.kill()
def paste(self, filename=None):
if not filename:
filename = 'blob/' + datetime.now().strftime('%Y%m%d_%H.%M.%S') + '.png'
filename = Path(filename).with_suffix('.png')
im = ImageGrab.grabclipboard()
if im:
true_output = Path(self.root).joinpath(filename)
true_output.parent.mkdir(parents=True, exist_ok=True)
im.save(true_output)
print('Pasted as "{}"'
.format(f'http://localhost:{self.port}/{quote(str(filename))}'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment