0

Assets フォルダーにある別のフォルダー内のフォルダーからのみ画像の寸法を取得する必要があります。いくつかのコードを試しましたが、メモリを節約できません。つまり、画像をメモリにロードしたくありません。フォルダ内のすべてのファイルのサイズを取得したいだけです。これが私が使用しているコードですが、これはメモリ効率が悪いため、ビットマップをロードしたくありません。

private void getFileNames()
{
    AssetManager assetManager = mCxt.getAssets();
    InputStream bitmap;
    Bitmap bit;
    Log.d("Jawad"," in Function");
    // To get names of all files inside the "Files" folder
    try {
        String[] files = assetManager.list(mFolferPath);

        Log.d("Jawad"," Length "+files.length);
        for(int i=0; i<files.length; i++)
        {
            if(files[i].contains(".png") ||files[i].contains(".jpg"))
            {
                Log.d("Jawad","" +files[i]);
                bitmap=assetManager.open(mFolferPath+"/"+files[i]);
                bit=BitmapFactory.decodeStream(bitmap);
                Log.d("Jawad",""+ " ," +bit.getWidth() + " , " + bit.getHeight());
                bitmap = null;
                bit.recycle();
                bit = null;
            }
        }
    } catch (IOException e1) {
        Log.d("Jawad"," "+e1);
    }
}

mFolferPath = gfx/装飾/ビスケット

このコードは私に次元を与えていますが、問題はそれらをメモリにロードしたくないということです。

4

1 に答える 1

1

画像のサイズのみを取得するには、BitmapFactory.Options.inJustDecodeBounds を true に設定してデコードします。

BitmapFactory.Options Bitmp_Options = new BitmapFactory.Options();
Bitmp_Options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(bitmap, null, options);

int currentImageHeight = Bitmp_Options.outHeight;
int currentImageWidth = Bitmp_Options.outWidth;

ここを参照

于 2013-05-13T07:07:43.607 に答える