哪里有位图getByteCount()?

Ast*_*aut 10 methods android

我知道Android平台是一个巨大的混乱,过于复杂和过度设计,但严重的是要获得位图的大小,是否真的有必要进行所有这些转换?

Bitmap bitmap = your bitmap object
ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] imageInByte = stream.toByteArray();
long length = imageInByte.length;
Run Code Online (Sandbox Code Playgroud)

根据谷歌文档,Bitmap有一个方法getByteCount()来做到这一点,但它没有在SDK2.2中出现,没有尝试过其他的,但没有提及它被弃用或API支持与API 1有任何不同. ..那么这个神秘的方法隐藏在哪里?能做到这一点真是太好了

bitmap.getByteCount()
Run Code Online (Sandbox Code Playgroud)

Jer*_*rds 61

我刚写了这个方法.AndroidVersion.java是我创建的一个类,可以轻松地从手机中获取版本代码.

http://code.google.com/p/android-beryl/source/browse/beryl/src/org/beryl/app/AndroidVersion.java

public static long getSizeInBytes(Bitmap bitmap) {
    if(AndroidVersion.isHoneycombMr2OrHigher()) {
        return bitmap.getByteCount();
    } else {
        return bitmap.getRowBytes() * bitmap.getHeight();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • getByteCount()只是一种方便的方法,它完全按照你在else块中的方式执行.换句话说,如果您只是重写getSizeInBytes以始终返回"bitmap.getRowBytes()*bitmap.getHeight()",则不需要进行Android版本检查. (18认同)

Mat*_*all 12

如果按API级别8(= SDK 2.2)进行过滤,您会看到它Bitmap#getByteCount()是灰色的,这意味着该API级别中不存在该方法.

getByteCount() 在API级别12中添加.