title: android image view crashes when big image is chosen for display
body: <p>Many have asked this question before and got the right way to resolve it. but somehow its not working out for me. My app crashes when I try to choose a large image for display. I have tried to reduce the size by scaling it as well using BitmapFactory. This is not working. Please help.</p>
  
  <p>my code:</p>
  
  <pre><code>    public void browse(View v){
              @SuppressWarnings("unused")
              int id = v.getId();
              Intent intent = new Intent();
              intent.setType("image/*");
              intent.setAction(Intent.ACTION_GET_CONTENT);
              intent.addCategory(Intent.CATEGORY_OPENABLE);
              startActivityForResult(intent, REQUEST_CODE);
          }
  
          @Override
          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
              InputStream stream = null;
  
              if (requestCode == REQUEST_CODE &amp;&amp; resultCode == Activity.RESULT_OK) {
  
                  Uri imgUri = data.getData();
                  logopath = getPath(imgUri);
  
                  //This block is to show the view
                      try {
                          if(bitmap != null){
                              bitmap.recycle();
                          }
                              stream = getContentResolver().openInputStream(data.getData());
                              bitmap = BitmapFactory.decodeStream(stream);
                              iv.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 100, 100, true));
                              //bitmap = shrinkBitmap(logopath,100,100);
                              //iv.setImageBitmap(bitmap);
                          } 
                      catch (FileNotFoundException e) {
                              e.printStackTrace();
                      }
                  finally{
                      if (stream != null) {
                          try {
                                  stream.close();
                              } 
                          catch (Exception e) {
                                  e.printStackTrace();
                          }
                      }
                  }
  
              }
          }
  
          private Bitmap shrinkBitmap(String file, int height, int width) {
              BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
              bmpFactoryOptions.inJustDecodeBounds = true;
              Bitmap bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions);
  
              int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)height);
              int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)width);
  
              if (heightRatio &gt; 1 || widthRatio &gt; 1)
              {
               if (heightRatio &gt; widthRatio)
               {
                bmpFactoryOptions.inSampleSize = heightRatio;
               } else {
                bmpFactoryOptions.inSampleSize = widthRatio; 
               }
              }
  
              bmpFactoryOptions.inJustDecodeBounds = false;
              bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions);
           return bitmap;
          }
  </code></pre>
  
  <p>LogCat details:</p>
  
  <pre><code>    06-25 07:16:26.056: E/dalvikvm-heap(1973): Out of memory on a 48000016-byte allocation.
      06-25 07:16:26.206: E/AndroidRuntime(1973): FATAL EXCEPTION: main
      06-25 07:16:26.206: E/AndroidRuntime(1973): java.lang.OutOfMemoryError
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:529)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:601)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at com.example.tg_db1.edit_company.onActivityResult(edit_company.java:113)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.app.Activity.dispatchActivityResult(Activity.java:5293)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.app.ActivityThread.access$1100(ActivityThread.java:141)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.os.Handler.dispatchMessage(Handler.java:99)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.os.Looper.loop(Looper.java:137)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at android.app.ActivityThread.main(ActivityThread.java:5039)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at java.lang.reflect.Method.invokeNative(Native Method)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at java.lang.reflect.Method.invoke(Method.java:511)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
      06-25 07:16:26.206: E/AndroidRuntime(1973):     at dalvik.system.NativeStart.main(Native Method)
  </code></pre>