首先得到Bitmap对象所占资源的大小,在新的API上提供了一个方法
bitmapgetByteCount() // from API Level 12
也就是说从SDK12才能使用这个方法,针对以前的版本还是不能使用,那么怎么办?看第二种方法
bitmapgetRowBytes() bitmapgetHeight() //这样也能很准确的计算出Bitmap所占内存的大小,方法都是从SDK1就开始存在的。bingo!正解!
需要注意的是我上面说的两种方法是得到bitmap对象在内存中所占的存储空间大小,其实比实际(比如文件)大,如果想得到文件大小呢?
如何得到bitmap所使用的文件大小?
bitmapcompress(format, quality, stream)
至于方法的解释,参数的传入自己去看API文档,最后一个参数是一个OutPutStream对象,得到大小
假若是bitmap类型 intentputExtra("bitmap", new Parcelable[]{bitmap}); Bitmap实现了Parcelable接口 所以可以序列化传递过去
没有简单直接的办法。
比较曲折的办法有两个,一个是通过DC绘制获取:
Image pImage = Image::FromFile(L"c:\\testgif");Status status = pImage->GetLastStatus();
if(Ok == status)
{
CDC dc;
dcCreateCompatibleDC(NULL);
CBitmap bitmap;
bitmapCreateCompatibleBitmap(&dc, pImage->GetWidth(), pImage->GetHeight());
CBitmap pbmpOld = dcSelectObject(&bitmap);
Graphics graphics(dcm_hDC);
status = graphicsGetLastStatus();
if(Ok == status)
{
graphicsDrawImage(pImage, 0, 0);
// enjoy of bitmap;
}
dcSelectObject(pbmpOld);
}
一个是用同样是GDI+的Bitmap重新读取文件或读取Image保存的文件:
Bitmap pBitmap = Bitmap::FromFile(L"c:\\testgif");Status status = pBitmap->GetLastStatus();
if(Ok == status)
{
HBITMAP hBitmap = NULL;
status = pBitmap->GetHBITMAP(Color(0,0,0), &hBitmap);
if(Ok == status)
{
// enjoy of bitmap;
}
}
以上就是关于android开发怎么得到Bitmap所占资源的大小全部的内容,包括:android开发怎么得到Bitmap所占资源的大小、如何从ImageView中获取bitmap bitmap在activity中的传输、VC++关于如何用GDI+取得图片的Hbitmap等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)