我正在尝试从远程源(例如http://codeboxr.com/wp-content/uploads/2012/06/6_logo_predesign.jpg)转换图像,然后将其转换为(字节数组,然后转换为)相应的String。然后我必须将此String传递给另一个方法,该方法将String转换为适当的对象并将其设置为ImageView
的源。
这是我到目前为止所尝试的内容。
URL file = new URL(imageURL);
URLConnection uc = file.openConnection();
InputStream imageInFile = file.openStream();
byte imageData[] = new byte[(int) uc.getContentLength()];
imageInFile.read(imageData);
// Converting Image byte array into Base64 String
String imageDataString = Base64.encodeToString(imageData, 0);
//Image successfully converted to string, ready to pass as a parameter!
现在将imageDataString
转换为ImageView
byte[] imageByteArray = receivedString.getBytes();
ImageView background = (ImageView)findViewById(R.id.imageView_background);
background.setImageBitmap(BitmapFactory.decodeByteArray(imageByteArray, 0, imageByteArray.length));
但这不起作用。我一直在运行时遇到错误。 这是堆栈跟踪。
12-26 20:34:03.288 11325-11325/samarth.learning.http D/dalvikvm﹕ GC_FOR_ALLOC freed 3203K, 63% free 4103K/10920K, paused 27ms, total 27ms
12-26 20:34:03.288 11325-11325/samarth.learning.http I/dalvikvm-heap﹕ Forcing collection of SoftReferences for 185326656-byte allocation
12-26 20:34:03.308 11325-11325/samarth.learning.http D/dalvikvm﹕ GC_BEFORE_OOM freed 70K, 64% free 4032K/10920K, paused 19ms, total 19ms
12-26 20:34:03.308 11325-11325/samarth.learning.http E/dalvikvm-heap﹕ Out of memory on a 185326656-byte allocation.
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ "main" prio=5 tid=1 RUNNABLE
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ | group="main" sCount=0 dsCount=0 obj=0x415d8728 self=0x415c2658
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ | sysTid=11325 nice=0 sched=0/0 cgrp=apps handle=1074503676
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ | state=R schedstat=( 0 0 0 ) utm=34 stm=26 core=0
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:429)
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:447)
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ at samarth.learning.http.MainActivity$MyAsyncTask.onPostExecute(MainActivity.java:496)
12-26 20:34:03.308 11325-11325/samarth.learning.http I/dalvikvm﹕ at samarth.learning.http.MainActivity$MyAsyncTask.onPostExecute(MainActivity.java:330)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.os.AsyncTask.finish(AsyncTask.java:631)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.os.AsyncTask.access$600(AsyncTask.java:177)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.os.Looper.loop(Looper.java:213)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at android.app.ActivityThread.main(ActivityThread.java:5225)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at java.lang.reflect.Method.invokeNative(Native Method)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at java.lang.reflect.Method.invoke(Method.java:525)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ at dalvik.system.NativeStart.main(Native Method)
12-26 20:34:03.318 11325-11325/samarth.learning.http I/dalvikvm﹕ [ 12-26 20:34:03.318 11325:11325 D/skia ]
--- decoder->decode returned false
12-26 20:34:03.318 11325-11325/samarth.learning.http D/AndroidRuntime﹕ Shutting down VM
12-26 20:34:03.318 11325-11325/samarth.learning.http W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x415d78b0)
12-26 20:34:03.318 11325-11325/samarth.learning.http E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:429)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:447)
at samarth.learning.http.MainActivity$MyAsyncTask.onPostExecute(MainActivity.java:496)
at samarth.learning.http.MainActivity$MyAsyncTask.onPostExecute(MainActivity.java:330)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)