Android – Bitmap.createScaledBitmap()设置配置为ARGB_8888

Android – Bitmap.createScaledBitmap()设置配置为ARGB_8888,第1张

概述这是我第一次有一个问题,尽管经过彻底的搜索,似乎还没有被问到. 我遇到了Bitmap.createScaledBitmap()的问题,无论输入的配置如何,生成的缩放位图始终是ARGB_8888.当然,使用有限的内存时这是一个问题. InputStream is; try { is = mAssets.open("test.png"); BitmapFacto 这是我第一次有一个问题,尽管经过彻底的搜索,似乎还没有被问到.

我遇到了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.    }

上面的代码返回输出:

Original Bitmap: ARGB_4444

Scaled: ARGB_8888

由于Bitmap.createScaledBitmap()方法不采用Config,因此似乎没有办法阻止这种情况.有任何想法吗?

解决方法 createScaledBitmap(…)创建一个新的缩放位图,因此将提供的参数传递给createBitmap(…)方法.以下是createBitmap(…)源代码中的 snippet:

if (config != null) {        switch (config) {            case RGB_565:                newConfig = Config.RGB_565;                break;            case Alpha_8:                newConfig = Config.Alpha_8;                break;            //noinspection deprecation            case ARGB_4444:            case ARGB_8888:            default:                newConfig = Config.ARGB_8888;                break;        }    }

如您所见,具有ARGB_4444配置的每个位图都会转换为ARGB_8888位图.所以回答你的问题:不,没有办法阻止这种情况(除非你想复制部分Bitmap.java源代码并创建自己的缩放方法).

为什么ARGB_4444配置的位图会转换为ARGB_8888?

documentation声明如下:

ARGB_4444:

This fIEld is deprecated. Because of the poor quality of this
configuration,it is advised to use ARGB_8888 instead.

总结

以上是内存溢出为你收集整理的Android – Bitmap.createScaledBitmap()设置配置为ARGB_8888全部内容,希望文章能够帮你解决Android – Bitmap.createScaledBitmap()设置配置为ARGB_8888所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存