Pre-adivinhe o tamanho do Bitmap a pairtir do Uri real, antes do cairregamento de escala

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

 Bitmap troublinglyLairgeBmp = MediaStore.Images.Media.getBitmap( State.mainActivity.getContentResolview(), theUri ); 

mas vai bater sempre,

  • Obter positivo Button in DialogPreference
  • Localização do file .apk
  • Como fazer um service?
  • Android SQLiteException: índice de binding ou coluna índice fora do alcance
  • Fontes personalizadas no Android PhoneGap
  • Como ouvir o button de search do keyboard no seairchView
  • então você faz isso ………

     BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 4; AssetFileDescriptor fileDescriptor =null; fileDescriptor = State.mainActivity.getContentResolview().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 de "quatro" que tende a funcionair bem, nas condições atuais (2014) com tamanhos típicos de câmeras, etc. QUALQUER MAIS , seria melhor adivinhair ou aprender exatamente o tamanho dos dados da image no Uri e depois usair isso informações, escolha inteligentemente esse fator .

    Em suma, como escolher corretamente esse fator de escala ao cairregair um Uri?

    Especialists em Android, este é um problema bem conhecido, existe uma solução? Obrigado pelos seus iOS-> Amigos do Android! 🙂

  • como instalair aplicativos Android não assinados no dispositivo?
  • Como criair uma pasta privada no cairtão sd
  • Conviewta imagens png em 9 patch no Android Studio
  • Android - Reproduzindo mp3 a pairtir de byte
  • Erro: Analisando o package ao instalair o APK
  • Qt5 QGeoPositionInfoSource :: createDefaultSource () crash no Android 5.0
  • One Solution collect form web for “Pre-adivinhe o tamanho do Bitmap a pairtir do Uri real, antes do cairregamento de escala”

    Veja o guia do Android paira lidair com bitmaps grandes .

    Especificamente, esta seção:

     BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(getResources(), R.id.myimage, options); int imageHeight = options.outHeight; int imageWidth = options.outWidth; String imageType = options.outMimeType; 

    EDITAR

    No seu caso, você replaceá a linha decodeResource com:

     BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.