Hi, Kostya I can't use second solutions because they are for API level8 and I am developing this for APilevel4(1.6), But after changing byte array size to 1023 it works perfectly fine, Thanks again Kostya I am working on this from last 8 days and today I got the solution.
But still I don't know how it works with 1023 and not with 1024? On Aug 30, 1:04 pm, Kostya Vasilyev <kmans...@gmail.com> wrote: > Pramod, > > Base64 encoding has end-of-data markers. > > http://en.wikipedia.org/wiki/Base64 > > Your code encodes each 1024-byte chunk of input image data into its own > Base64 string. Each of those has its own end markers. > > Because of this, the receiving side doesn't see one piece of data > encoded with Base64, rather, it sees multiple pieces of data, which I > guess is not what it expects. > > There are several ways to fix this: > > 1 - Write your own code to encode partial data pieces, flushing the > output at the very end. Base64 encoding is not difficult. > > 2 - Use a ready-made class, like this one: > > http://commons.apache.org/codec/apidocs/org/apache/commons/codec/bina... > > It's equivalent is available in Android starting with 2.2: > > http://developer.android.com/reference/android/util/Base64OutputStrea... > > 3 - Change buffer size in your code to 1023 (a multiple of 3). This is a > hack, but probably the easiest thing to do. > > -- Kostya > > 30.08.2010 11:23, pramod.deore пишет: > > > > > Someone knows how to encode large image in Base64 format. Because I > > had tried using creating byte array as large as image size but if > > image it encode image if size of image is upto 800kb, if image is > > greater than 800kb then it throws runtime exception as > > OutofMemoryException. So I had decided use 1kb of byte array, in that > > I encode 1kb of image write to a file after that again encode 1kb of > > image and write to a file ..... The code is like this > > > public void encodeImage() > > { > > try > > { > > out = new PrintWriter("c:/program1/zzz.txt"); > > InputStream inputStream = new FileInputStream > > ("c:/program1/ > > tt.jpg"); > > OutputStream outputStream = new > > FileOutputStream("c:/program1/ > > zzz.txt"); > > > byte[] b = new byte[1024]; > > > while((read= inputStream.read(b))>0) > > { > > System.out.println ("Inside while"); > > inputStream.mark(b.length); > > String encoded = Base64.encode(b); > > //System.out.println (encoded); > > out.print(encoded); > > out.flush(); > > > //bas.write(b); > > } > > > out.close(); > > > } > > > catch (Exception e) > > { > > System.out.println (e); > > } > > > } > > > But when I decode that image > > herehttp://www.opinionatedgeek.com/dotnet/tools/base64decode/ > > then it says that he input is not a valid Base-64 string. > > > Please help me to solve this issue. > > -- > Kostya Vasilyev -- WiFi Manager + pretty widget > --http://kmansoft.wordpress.com -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en