Pré-adivinhe o tamanho do Bitmap a partir do Uri real, antes do carregamento da escala

Se você tem um Uri e precisa doBitmap, teoricamente, você poderia fazer isso

Bitmap troublinglyLargeBmp =
  MediaStore.Images.Media.getBitmap(
      State.mainActivity.getContentResolver(), theUri );

mas vai travar toda vez,

então você faz isso .........

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;

AssetFileDescriptor fileDescriptor =null;
fileDescriptor =
  State.mainActivity.getContentResolver().openAssetFileDescriptor( theUri, "r");

Bitmap actuallyUsableBitmap
  = BitmapFactory.decodeFileDescriptor(
    fileDescriptor.getFileDescriptor(), null, options);

Utils.Log("'4-sample' method bitmap ... "
   +actuallyUsableBitmap.getWidth() +" "
   +actuallyUsableBitmap.getHeight() );

isso éfantástico e é a solução de trabalho.

Observe o fator "quatro" que tende a funcionar bem, nas condições atuais (2014) com tamanhos típicos de câmera, etc. NO ENTANTO, seria melhoradivinhe ou aprenda exatamente o tamanho dos dados da imagem no theUrie, em seguida, usando essas informações,inteligentemente escolher esse fator.

Em resumo,como escolher corretamente esse fator de escala quando você carrega um Uri?

Especialistas em Android, esse é um problema bem conhecido, existe uma solução? Obrigado pelos seus amigos do iOS-> Android! :)

questionAnswers(1)

yourAnswerToTheQuestion