Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Give an image, get a data-uri
#!/usr/bin/env python
"""Command line script to convert a file, usually an image, into a data URI
for use on the web."""
import base64
import mimetypes
import os
import sys
class FileNotFoundError(Exception):
pass
def img_to_data(path):
"""Convert a file (specified by a path) into a data URI."""
if not os.path.exists(path):
raise FileNotFoundError
mime, _ = mimetypes.guess_type(path)
with open(path, 'rb') as fp:
data = fp.read()
data64 = u''.join(base64.encodestring(data).splitlines())
return u'data:%s;base64,%s' % (mime, data64)
def usage(argv):
print 'Usage: %s <path-to-file>' % argv[0]
if __name__ == '__main__':
try:
path = sys.argv[1]
except IndexError:
usage(sys.argv)
sys.exit(1)
try:
print img_to_data(path)
except FileNotFoundError:
print 'File not found!'
sys.exit(2)
@rik

This comment has been minimized.

Copy link

@rik rik commented Jul 26, 2011

Thanks for this.

I use it with this command on Mac to copy the output in my clipboard:
data-uri file.img | pbpaste

@revolunet

This comment has been minimized.

Copy link

@revolunet revolunet commented Aug 17, 2011

nice for server side compression

what do you think about this pure javascript version http://www.revolunet.com/static/drop.html ?

@jsocol

This comment has been minimized.

Copy link
Owner Author

@jsocol jsocol commented Aug 17, 2011

@revolunet: There are a number of websites/services that will do it, I specifically wanted something that didn't make me find one of them, or open a browser :)

@benmj

This comment has been minimized.

Copy link

@benmj benmj commented May 15, 2013

This is rad. So simple yet so effective.

@OmkarKirpan

This comment has been minimized.

Copy link

@OmkarKirpan OmkarKirpan commented Dec 10, 2018

Thanks a lot for this.

@jwlyn

This comment has been minimized.

Copy link

@jwlyn jwlyn commented Apr 1, 2019

what about SVG? this don't work.

@santosh-burada

This comment has been minimized.

Copy link

@santosh-burada santosh-burada commented Aug 26, 2020

how to use this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.