Data URI adalah satu teknologi yang bagus pada aku kerana semasa menanya (query) sesebuah laman, kita tidak perlu melihat kedalam folder lain untuk mencari fail imej yang berkaitan. Sebaliknya ia telah sedia ada samada dalam fail html atau css. Aku tidak dapat huraikan sepenuhnya kerana bukan bidangku.
Kembali kepada tajuk, aku akan tunjuk cara tukar fail imej kepada data URI kemudian sebaliknya menggunakan python.
Imej kepada data URI
data = open('failpngku.png', 'rb').read().encode('base64').replace('\n','')
dataUri = "data:image/png;base64,%s" % data
Sekarang anda boleh guna kandungan dataUri sebagai argumen untuk attribut src bagi tag img, seperti berikut:
<img src="<kandungan dataUri>">
Yang berikut akan menghasilkan arca smily:
Kod
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAA3NCSVQICAjb4U/gAAAC7UlEQVQokQXBW0/bZhgA4PezjR2HJM6BxA4ODFJIgVIqqqG11aaph+0P7KIXvd8fmCZtP2G9rVrtdt160C6g07SBJqRWRSlbS8foCKJNSAMhGNtJbMfxIU7sr8+DsO0D5UP/FFgXjPf/v3nu2Iqi1h23M5oTxydn+GyB5hagz/lOmmTDCHsYCAew+t/mH64tz83l/b6TyOcB+oF2Uq69O5GN7Oj5mdmrQOa9DkLYsgZ+e6P4q5iL5CdEKpIBHO0pWt8zIrlhQHJTrh3VVa1FLl28GePyFIRNpVYZEbjC/AIAaSg6lxSZRJIBGzzV7XkjfI5iKInt1GobC0s0oWvFndLa/PzMaaOlKYPllY3vvv0eUAA0defO3R9u35OOZF3VClMjml7Uld8IWSlNF1KIwoKYTmQyq2t//fzLQ8AAA+/ujz89fVbMjqVCtEOSbT7VM/Udorz7dmp6tt0sAeiuXfYG8hc3rgJNA6DFBTHOgVR/4dj7zcZrPkG0jg8o3/EA9xjSBWhRJDz5/QG44a5atczGo+X7ZnMd4zqFbRT4Cb6w888WgV0fEMNAgG2JGrIM+TUQUiTV5UXfN7Y7WpkYtGMsQv0B0OHAAfKbr78cJoNwMqrJEkuj0DADlNfYf+F0q/RQJ5Fl+92WpughiiOtIavjE2lesLoeMJlkJPvk8Ypc2e3U/hbP0rzQY1jz3dar9dUiy4zHJi/vlk6mZz9B2Hy6sf7nZ9cvWfqh56rV6na7eWRbaiiMTFM7d+68mJtybDoW/eh9xZi7+Cny2+XGyV5b+/fCx6OB3SCSMVA7kB4FsAC8QN0nQhHPi7XU4dNGfPHzrwiCE9PZMwPEPH+2ScQFaFlARNWtPXPv2DqQCFYAVth8WTmSg8VrtwALCAcGIEeVtnX1rVLfy8RDYiYV5kfANbHvlcoHst4bm7iSHb8SjV/AAYV6AxVBb4h0AQxoV2uVN5p8qLWkAPcj8cSZuUWGG4sJSwCCDymjCx8AL+KIzDGViXEAAAAASUVORK5CYII=">
Hasil
data URI kepada imej
dataSection = dataUri[len('data:image/png;base64,'):]
data = []
while (len(data) > 0):
data.append(dataSection[:76:])
dataSection = dataSection[76:]
ofile = open('output.png', 'wb')
ofile.write('\n'.join(data).decode('base64'))
ofile.close()
Sebuah fail berformat png dengan nama output.png akan terhasil daripada kod di atas, dengan syarat pemboleh ubah dataUri ditugaskan nilai terlebih dahulu.