Friday, November 11, 2011

Tukar fail imej kepada Data URI dan sebaliknya

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.

No comments:

Post a Comment