图像Byte数组为String(反之亦然)在android系统? [英] Image to Byte Array to String (and vice versa) in android?

查看:209
本文介绍了图像Byte数组为String(反之亦然)在android系统?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将图像转换成字节数组,那么该字节数组转换为字符串。另外,我再像该字符串转换回一个字节数组,最后回到图像中的Adroid。我可能会如何去实现呢?任何帮助将AP preciated。

这是转换的InputStream串

 私人字符串convertInputStreamToString(InputStream的中){        尝试{
            字节[] B =新的字节[8000];
            in.read(二);
            字符串base64String = Base64.en code(B);
            返回base64String;        }赶上(IOException异常五){
            e.printStackTrace();
            返回;
        }    }

这将字符串转换为InputStream的

 字符串和imagestring = Settings.getCurrentUserImage(C); //它是连接codeD字符串
                字节[]字节组= Base64.de code(和imagestring);
                InputStream为=新ByteArrayInputStream进行(ByteArray的);
                可绘制dUser = Drawable.createFromStream(是,SRC);
                userImg.setImageDrawable(dUser);

这是正确的?!
我有错误在此行中code的

  InputStream为=新ByteArrayInputStream进行(ByteArray的);

错误所在。

  02-22 23:31:30.268:ERROR / AndroidRuntime(611):致命异常:主要
02-22 23:31:30.268:ERROR / AndroidRuntime(611):显示java.lang.NullPointerException
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在java.io.ByteArrayInputStream中的<&初始化GT;(ByteArrayInputStream.java:58)。
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在aynoo.forms.FreindMessagesActivity.addMessage(FreindMessagesActivity.java:294)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在aynoo.forms.FreindMessagesActivity.getMessagesFromJSON(FreindMessagesActivity.java:459)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在aynoo.forms.FreindMessagesActivity.access $ 3(FreindMessagesActivity.java:433)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在aynoo.forms.FreindMessagesActivity $ 3.run(FreindMessagesActivity.java:190)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在android.os.Handler.handleCallback(Handler.java:587)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在android.os.Handler.dispatchMessage(Handler.java:92)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在android.os.Looper.loop(Looper.java:123)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在android.app.ActivityThread.main(ActivityThread.java:3647)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在java.lang.reflect.Method.invokeNative(本机方法)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在java.lang.reflect.Method.invoke(Method.java:507)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-22 23:31:30.268:ERROR / AndroidRuntime(611):在dalvik.system.NativeStart.main(本机方法)


解决方案

如果您使用的是2.2+可以使用的 Base64的工具做的正是这种。如果你需要对旧设备只是复制/粘贴<一个href=\"http://$c$csearch.google.com/$c$csearch/p?hl=en#uX1GffpyOZk/core/java/android/util/Base64.java&q=package%3aandroid.git.kernel.org%20file%3aandroid/util/Base64.java&sa=N&cd=1&ct=rc&l=3\"相对=nofollow> Base64.java 文件到您的项目它的重量真的很轻。

I'd like to convert an image into a byte array, then convert that byte array into a string. Also, I'd then like to convert that string back to a byte array, and finally back to an image in adroid . How might I go about accomplishing this? Any help will be appreciated.

this is to convert inputstream to string

private String convertInputStreamToString(InputStream in){

        try {
            byte[] b=new byte[8000];
            in.read(b);
            String base64String=Base64.encode(b);
            return base64String;

        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }

    }

and this to convert string to inputstream

String imageString =Settings.getCurrentUserImage(c);// it is the encoded string 
                byte[] bytearray = Base64.decode(imageString);      
                InputStream is =new ByteArrayInputStream(bytearray);
                Drawable dUser = Drawable.createFromStream(is , "src"); 
                userImg.setImageDrawable(dUser); 

is this correct ?! I have error in this line of code

InputStream is =new ByteArrayInputStream(bytearray);

where the error is ..

02-22 23:31:30.268: ERROR/AndroidRuntime(611): FATAL EXCEPTION: main
02-22 23:31:30.268: ERROR/AndroidRuntime(611): java.lang.NullPointerException
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:58)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at aynoo.forms.FreindMessagesActivity.addMessage(FreindMessagesActivity.java:294)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at aynoo.forms.FreindMessagesActivity.getMessagesFromJSON(FreindMessagesActivity.java:459)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at aynoo.forms.FreindMessagesActivity.access$3(FreindMessagesActivity.java:433)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at aynoo.forms.FreindMessagesActivity$3.run(FreindMessagesActivity.java:190)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at android.os.Handler.handleCallback(Handler.java:587)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at android.os.Looper.loop(Looper.java:123)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at android.app.ActivityThread.main(ActivityThread.java:3647)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at java.lang.reflect.Method.invokeNative(Native Method)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at java.lang.reflect.Method.invoke(Method.java:507)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-22 23:31:30.268: ERROR/AndroidRuntime(611):     at dalvik.system.NativeStart.main(Native Method)

解决方案

If you are using 2.2+ you can use the Base64 utility to do exactly this. If you need it on older devices just copy/paste the Base64.java file to your project its really light weight.

这篇关于图像Byte数组为String(反之亦然)在android系统?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆