缩放位图效率

时间:2015-12-31 04:47:22

标签: android bitmap drawable

我想知道这两种方式中的哪一种在内存或速度方面更有效。

第一种方式 - BitmapFactory.decodeResource

    Bitmap loadedBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.big_image);
    Bitmap scaledBitmap = loadedBitmap.createScaledBitmap(loadedBitmap, 1920, 1080, false);

第二种方式 - (BitmapDrawable)getResources().getDrawable()

    Bitmap loadedBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.big_image)).getBitmap();
    Bitmap scaledBitmap = loadedBitmap.createScaledBitmap(loadedBitmap, 1920, 1080, false);

2 个答案:

答案 0 :(得分:1)

第一种方式更好。

 Bitmap loadedBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.big_image);
 Bitmap scaledBitmap = loadedBitmap.createScaledBitmap(loadedBitmap, 1920, 1080, false);

答案 1 :(得分:0)

理论上第一种方式要好得多。 原因是,

Bitmap loadedBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.big_image)).getBitmap();

您正在尝试进行显式转换,

((BitmapDrawable)<drawable object>

这里BitmapDrawable是Drawable的一个子类,然后是一个更倾向于失败并抛出ClassCastException的Downcast。