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

Reply via email to