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 回答