png - How to decode the image which is a base64 string, in Dart? -


i tried image clipboard when press ctrl+v on page, code a gist, console.log image content gets.

i found image content long base64 string special prefix:

data:image/png;base64,ivborw0kggoaaaansuheugaaaeeaaaaucayaaadstfabaaajheleqvrycxvxwxobvxl+pu2yfsuylmnxhtdpy8c4phxptokegkblydowyxlllegsx8d/gbvuerhgmelpjkcznsswjhpzsbhgjo6rl1pybmuyzenwyvsc9xvfmvcoj8457/k8y9k+w5lmpi0ejcuywdn7zrmjh8obvqulysmnt2wqsx3ylwivdnzm6lopprujcpidq23ivz2oyadvl8tlevlul2xeufv1qx2s8lxnjau4yphfadgarjmcatamgqs2drkgqrmokvfhyrp3xfw5vbdj6jg98eylopgtt1kzxklfhdudzk4hynn8xdqgst1ybkoi3g5gd8ixbkqhkqmd7sntadralvgxpbjui6mdypgvtzntpcuwhvjjt5oyo5bakjbmx7nzcqrsadsmqzxqxghazxtgylober1ukqat6qqo4tgemi0ie+oqw+6l+vyefuftdfxzu6z8xvbb+qkoxknceuekybnzcxamhvqb1ido1af56pr8dyrynmiyofi5vqkdymhphfjj1fv7tzz88tt2dd9qoxiqz95oikge3eavimgyqsy+tl+p9bdf4svccrkxl8bnndx/hqmzm5i8dg3helyzdqlogzpgqnprstgvhoswtnafm2spvnxcnzq9g+cx8uy3cehyhwj19bkesriplgrt7uxhzipv5cee5pyeib2xhmxorqxagb4yw1sjk3hv5kp09srewwes9mlrj5vop83hpepdegclrevlzn2+jz2ntzdy24prrl8kcwrywwwdhglgyhxm3rib4elpkzwxtajsx6ft50t4+vkfcpjpoyz0rzay1g9umlu7yoweitr1li5/+7ou5ljjwbfl9acjzfavjttupvgtlraweb/pw7lbwzb2c7tbosnwis4nt+ohh3ycixptncrzonrqwhdbrsyhflbxysgxw+nbt1fipcwvpv4ia9/7dlxx35elbhophmh73uf4zb2/4imkeeztrxci8x8lqnxi/ivsf/89sdahx/7ix4i9/xe8kq/e2ki9/xav/3ext357b4twg+foat29crmpbulaydorn33b+/tbh7f2siqf37yoh1z8pulbkspolp7hs5v7upw7o2g/bkeneknc8ejmk8sjsml+zps3b/6adrjvskq0/nldbh/6z9yyegtjm9owjo7qfjjck7uiq1bambjg8qsm1mizukqi56ymo9uywbq04qxn7qh4+a5+8ve04rpvwapx0th4hmz+wsiqwxenysbvxorjbtrcmfqnxtdfamqvx4jfyebfzv8nd59/gas/uojvtb6nikrykk1gq7ykcsroc0drd1aqwlxc2n2nccgz50dc3ruuchrybeqdlc5goubhst5ac2kf7e4wnd4frwhwq2gvjpgual7q8mn/crh42fuzmrsaohop6krmt5dwatcmcmch5r/xzpueyxn8xqylbwmwjo2mouui63d8flvarbmzgtax9snpfxcvfrdicir9sodwefsf4xg7dv5n8iqve3sf/yi/gqn1lesti2nsjimlxj7zznccnzbuqznzwotfh2cpap/jai5qbfcdbe2wceukgnalggmvf9nnzvcumgkqdpwixtvzwbmhklw+ezdrhampl4oumnrqvgg1k0zgnftuziubuoeyghv7fhkx/vn9gn+bmlvduxwmet1dvdsbnegdwhjfyee49ud3ozvdkmip7giwwhsbwbq/rqjw2+9xiet2wh8iwrmu5lu6ifhsgna65m8bv4zdmvxxz95roucdqjyugle4j3l9hnh6uudqccmddseslmvlntjhqz60vhjro9rwfkqy+blh057b6gkxjzzx0ev3ihimiuj3yy7ww+f0wcunbaq1nhc6bdpzrir0iql/2odpd3g4y9htv/neepxeb3qegh9hmbch9hqdewlyzifhwhthuagc5gh3eyrtjolrmagklxg0ejztcz2fysmoti8x3bwa1rweqxrc0ossegktdwlws4fjy2muwvkjo8ejpxfihcejg2iv6va7vqh5fhluw+hyykijlztlhnwotr6te9hthjb8xskovxwoaxxswye+my3s/fsox/rk7y4aa/kc9cboincwlxf6uhz7kd2wsyy6tjbf06sjxykqoa4nj7f3eb9vlxmev1t2qkhwx4oqzhgzte9xkrjcpy7u/ilttazkw/be1rijo9i7geeht+fturcw/oh2h9alfydjvxdkldvumhwc7surtbzdweeieyc7nz1xhfxhi2ksncffmuv1baypu9lofxe0enrrlsuska0hk1+m9yfvo0v1dbt9s+8aw9qt6igydmjgsp5/rwowjkwnlepyf9rkb7xktweriq55sy+ykduh0d8+a2z4wwiqtwuhsvwcm0hesmi7nwx95i6ri9cwyyqny/ioiycji2oxo/eqk4ututi+a35+vs3kqhookeczptnaqvbha3ikeofemeasmzso5i3ezekr9eeoyb2rvhonguhzmmkjbaud4hbdc0zhxfwmcmt/hd+drf9qajh52itt7+2zd5xqox/xie/kzhsxirotofpqyiirv1fywbonr6ghj9gbecs/xssj3sz2bt52n2bgryir+w98xcqru3o1uqluwxnqh6w2hxrl5ke5jpzkcg7x1+woybqauckjqnwzpzot5sksyctbyihzignfpxxokye2wssi/9uidrmrkbd3jf0gpiiexcsiaznwyd3bs8sernptmxz6ibgv1qpifwcz2/vrck3jhszfc9fiakpxnzdwpymxpv9ejxohj7akzuuyehnzc20nxfdqnzjpxuagybzqsldvvhzhqvrcvb4z7ctogxaapoqrfj9j8kohedwejzmx9mugmfjjyynbuxv604dj0wiqq4k6qxklugaah/houyafdfqtqvsudmnrho3nv9k6ldqrewzhjyiqla50p5cvcl4wtfolrxmdvafkk3fmpazhih5xgbbiame4vz/kasmg9dmtxzhji5b6jtzt6cvoo402xtz2ymsvragvlbiqbkwebstx63rkkrb1mctn1gmjj8gphuck9prruzrpv4yhrlngpjyni3mtdnxteelymsknku+b/wd4ldy7nz0nzaaaaabjru5erkjggg== 

how decode binary? tried remove prefix data:image/png;base64, , use base64 library decode rest binary, , save image.png file. file can't displayed, invalid format error.

but if paste whole string http://base64online.org/decode/, can play image well.

the base64 library used https://github.com/wstrange/base64, , code is:

import 'package:base64_codec/base64_codec.dart';  var body = /* long str above */;  var prefix = "data:image/png;base64,"; var bstr = body.substring(prefix.length); var bs = base64codec.codec.decodelist(bstr.codeunits); var file = new file("image.png"); file.writeasbytessync(bs); 

i don't know wrong :(

try using crypto package dart sdk. creates image.png opens fine (i believe it's image... enter image description here)

library foo;  import 'package:crypto/crypto.dart'; import 'dart:io';  void main() {    var body = "data:image/png;base64,ivborw0kggoaaaansuh... snip";    var prefix = "data:image/png;base64,";   var bstr = body.substring(prefix.length);   var bytes = cryptoutils.base64stringtobytes(bstr); // using cryptoutils dart sdk   var file = new file("image.png");   file.writeasbytessync(bytes); }   

you'll need add crypto pubspec.yaml :

dependencies:   crypto: 

the library linked @ https://github.com/wstrange/base64, notes in readme:

deprecated

note: dart sdk includes base64 codec url safe options. unless need streaming support, should use sdk methods faster.

see cryptoutils

see how native convert string -> base64 , base64 -> string


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -