2016-05-12 5 views
-2

デバイスストレージからファイルを取得し、イメージビューで表示しようとしています。 場合によっては完璧に動作していることもありますが、時には正しく動作しない場合もあります。ビットマップはありますが、イメージビューは黒のままです。ビットマップがimageViewのランダムな問題で設定されていません

お勧めです。

ストレージファイルの場所

file:/storage/emulated/0/Download/Full-hd-nature-wallpapers-free-download2.jpg 

方法戻っているビットマップ

パブリック静的ビットマップconvertToBitmap(ファイルファイル){

URI uri = null; 
    try { 
      uri = file.toURI();    
     BitmapFactory.Options options = new BitmapFactory.Options();    
     options.inSampleSize = 1;    
     Bitmap bmp = BitmapFactory.decodeStream(uri.toURL().openStream(), new Rect(), options); 

     //bmp.recycle(); 
     return bmp; 

    } catch (Exception e) { 
     return null; 
    }//catch 
} 

設定画像

 imageViewPatientImage.setImageBitmap(convertToBitmap(new File(mImagePath)); 
+0

あなたのコードを投稿してください。 –

+0

いくつかのログを投稿してください。 – Dhrupal

答えて

0

これを試してみてください:

Bitmap bitmap = getThumbnail(uri); 
    showImage.setImageBitmap(bitmap); 

パスビットマップを最適化するために:

public Bitmap getThumbnail(Uri uri) throws FileNotFoundException, IOException{ 
    InputStream input = getContext().getContentResolver().openInputStream(uri); 

    BitmapFactory.Options onlyBoundsOptions = new BitmapFactory.Options(); 
    onlyBoundsOptions.inJustDecodeBounds = true; 
    onlyBoundsOptions.inDither=true;//optional 
    onlyBoundsOptions.inPreferredConfig=Bitmap.Config.ARGB_8888;//optional 
    BitmapFactory.decodeStream(input, null, onlyBoundsOptions); 
    input.close(); 
    if ((onlyBoundsOptions.outWidth == -1) || (onlyBoundsOptions.outHeight == -1)) 
     return null; 

    int originalSize = (onlyBoundsOptions.outHeight > onlyBoundsOptions.outWidth) ? onlyBoundsOptions.outHeight : onlyBoundsOptions.outWidth; 

    double ratio = (originalSize > 500) ? (originalSize/500) : 1.0; 

    BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
    bitmapOptions.inSampleSize = getPowerOfTwoForSampleRatio(ratio); 
    bitmapOptions.inDither=true;//optional 
    bitmapOptions.inPreferredConfig=Bitmap.Config.ARGB_8888;//optional 
    input = getContext().getContentResolver().openInputStream(uri); 
    Bitmap bitmap = BitmapFactory.decodeStream(input, null, bitmapOptions); 
    input.close(); 
    return bitmap; 
} 

private static int getPowerOfTwoForSampleRatio(double ratio){ 
    int k = Integer.highestOneBit((int)Math.floor(ratio)); 
    if(k==0) return 1; 
    else return k; 
} 
+0

詳細についてはhttp://stackoverflow.com/questions/3879992/get-bitmap-from-an-uri-android –

+0

私は無駄に試しました。同じ問題。ときどき画像を開いていることがありますが、時々そうではありません:( – Androiduser

関連する問題