android开发怎么得到Bitmap所占资源的大小

android开发怎么得到Bitmap所占资源的大小,第1张

首先得到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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存