这是我第一次遇到一个问题,尽管进行了彻底的搜索,但似乎还没有人问过。
我在使用
以上代码返回以下输出:
原始位图: ARGB_4444 缩放后: ARGB_8888
由于
我在使用
Bitmap.createScaledBitmap()
时遇到了问题,其结果缩放位图始终为ARGB_8888
,而不考虑输入的配置。当然,在使用有限内存时,这是一个问题。 InputStream is;
try {
is = mAssets.open("test.png");
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Config.ARGB_4444;
Bitmap originalBitmap = BitmapFactory.decodeStream(is, null, opts);
System.out.println("Original Config: " + originalBitmap.getConfig());
mScale = (float) mHeight / originalBitmap.getHeight();
mBitmapScaled = Bitmap.createScaledBitmap(originalBitmap, (int)(mScale*(float)originalBitmap.getWidth()),
(int)(mScale*(float)originalBitmap.getHeight()), true);
System.out.println("Scaled: " + mBitmapScaled.getConfig());
originalBitmap.recycle();
is.close();
} catch (IOException e) {
// Do something.
}
以上代码返回以下输出:
原始位图: ARGB_4444 缩放后: ARGB_8888
由于
Bitmap.createScaledBitmap()
方法不接受Config参数,因此似乎没有办法防止这种情况发生。有什么想法吗?
createScaledBitmap
,而应该使用Canvas
。 - Alan