我知道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)
Mat*_*all 12
如果按API级别8(= SDK 2.2)进行过滤,您会看到它Bitmap#getByteCount()是灰色的,这意味着该API级别中不存在该方法.
getByteCount() 在API级别12中添加.
| 归档时间: |
|
| 查看次数: |
11274 次 |
| 最近记录: |