1

この問題を解決するために、stackoverflow で見つけたすべての解決策を試しましたが、無駄でした。次のコードを実行すると、mAlbumPhotoUri は "/mnt/sdcard/photo/1342147146535.jpg" という Uri 型になります。file.exists() は、このファイルが存在することを示しますが、コードの最後の行を実行した後、resultBitmap は null です。

私は何を間違っていますか?

File file = new File(mAlbumPhotoUri.toString());
if(file.exists()){
   Toast.makeText(this, "File exists in /mnt", Toast.LENGTH_LONG);}
else {
Toast.makeText(this, "File NOT exists in /mnt", Toast.LENGTH_LONG);}

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; //only get the size of the bitmap                

if (resultPhotoBitmap != null) {
    resultPhotoBitmap.recycle();
    }
String fname=new File(mAlbumPhotoUri.toString()).getAbsolutePath();
resultPhotoBitmap = BitmapFactory.decodeFile(fname, options);
4

1 に答える 1

8

inJustDecodeBoundsオプションを your に追加すると、まさにそれがBitmapFactory行われます。のサイズのみをデコードし、そのデータをオプション オブジェクトのおよびにロードします。実際のデータをデコードして返すことはありません。BitmapoutHeightoutWidthBitmap

実際にそれ自体を取得したい場合はBitmap、そのオプションを削除してdecodeFile()再度呼び出します。

于 2012-07-13T20:19:42.160 に答える