में मेरे पास व्यूपेगर है जिसका उपयोग मैं ज़ूम करने योग्य छवियों को दिखाने के लिए करता हूं (ImageViewTouch का उपयोग करके)। मुझे इंटरनेट (http) से बड़े बिटमैप्स लोड करने की आवश्यकता है। बड़े पैमाने पर मेरा मतलब 2000x1000 है। छवियों को इतना बड़ा होना चाहिए, क्योंकि वे ज़ूम करने योग्य हैं और विवरण दिखाने की आवश्यकता है। सर्वर पर छवियां .jpg प्रारूप हैं, लेकिन यह समस्या नहीं है - मैं इसे बदल सकता हूं।ViewPager में ImageView में बड़े बिटमैप लोड हो रहा है - मेमोरी
मैं स्मृति के साथ जांच प्राप्त किए बिना ImageViewTouch (ImageView) में इतनी बड़ी छवियों को लोड करने का प्रबंधन कैसे कर सकता हूं?
अब तक मैं बस का उपयोग कर रहा यह (AsyncTask):
ImageView currentView; //ImageView where to place image loaded from Internet
String ImageUrl; //URL of image to load
protected Bitmap doInBackground(ArrayList... params) {
Bitmap bitmap;
InputStream in = null;
imageUrl = (String)params[0].get(1);
try{
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(imageUrl));
in = response.getEntity().getContent();
} catch(Exception e){
e.printStackTrace();
}
try {
bitmapa = BitmapFactory.decodeStream(in);
in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
currentView.setImageBitmap(bitmap);
}
और यह स्मृति के साथ कई समस्याओं का कारण:
E/dalvikvm-heap(369): 69560740-byte external allocation too large for this process.
E/GraphicsJNI(369): VM won't let us allocate 69560740 bytes
या
E/AndroidRuntime(369): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(369): at android.os.AsyncTask$3.done(AsyncTask.java:200)
E/AndroidRuntime(369): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
E/AndroidRuntime(369): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
E/AndroidRuntime(369): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
E/AndroidRuntime(369): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
E/AndroidRuntime(369): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
E/AndroidRuntime(369): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
E/AndroidRuntime(369): at java.lang.Thread.run(Thread.java:1019)
E/AndroidRuntime(369): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
E/AndroidRuntime(369): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
E/AndroidRuntime(369): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:470)
E/AndroidRuntime(369): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:525)
E/AndroidRuntime(369): at com.package.app.ImageDownloader.doInBackground(ImageDownloader.java:78)
E/AndroidRuntime(369): at com.package.app.ImageDownloader.doInBackground(ImageDownloader.java:1)
E/AndroidRuntime(369): at android.os.AsyncTask$2.call(AsyncTask.java:185)
E/AndroidRuntime(369): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
E/AndroidRuntime(369): ... 4 more
http: // stackoverflow। कॉम/ए/24135283/2 9 4884 – Fattie