在ImageView中的image,可以使用getWidth()和getHeight()来获取宽度和高度,但是获得的image宽度和高度不是很精确的;对于背景,你首先要获取背景的Drawable对象,然后将Drawable对象转换为BitmapDrawable,这样你就可以将背景作为Bitmap对象并获取其宽度和高度了。代码如下:Bitmap b = ((BitmapDrawble)imageViewgetBackground())getBitmap(); int w = bgetWidth(); int h = bgetHeight(); or do like this wayimageViewsetDrawingCacheEnabled(true); Bitmap b = imageViewgetDrawingCache(); int w = bgetWidth(); int h = bgetHeight(); 或者也可以像下面这样:imageViewsetDrawingCacheEnabled(true); Bitmap b = imageViewgetDrawingCache(); int w = bgetWidth(); int h = bgetHeight(); 上面的代码仅仅可以为你获取当前ImageView的大小:imageViewgetWidth(); imageViewgetHeight(); 如果你要获取Drawable image对象的大小,可用如下代码:Drawable d = getResources()getDrawable(Rdrawableyourimage); int h = dgetIntrinsicHeight(); int w = dgetIntrinsicWidth();
BitmapgetAllocationByteCount() 方法获取 Bitmap 占用的字节大小
默认情况下 BitmapFactory 使用 BitmapConfigARGB_8888 的存储方式来加载内容,而在这种存储模式下,每一个像素需要占用 4 个字节。
实际上 BitmapFactory 在解析的过程中,会根据当前设备屏幕密度和所在的 drawable 目录来做一个对比,根据这个对比值进行缩放 *** 作。
在 Android 中,各个 drawable 目录对应的屏幕密度分别为下:
PS: OptionsinMutable 置为 true,这里如果不置为 true 的话,BitmapFactory 将不会重复利用 Bitmap 内存
复用 inBitmap 之前,需要调用 canUseForInBitmap 方法来判断 reuseBitmap 是否可以被复用。这是因为 Bitmap 的复用有一定的限制:
在不压缩的前提下,不建议一次性将整张图加载到内存,而是采用分片加载的方式来显示部分内容,然后根据手势 *** 作,放大缩小或者移动显示区域。
BitmapRegionDecoder 将加载到内存中,可以以绝对路径、文件描述符、输入流的方式传递给 BitmapRegionDecoder
当需要在界面上同时展示一大堆的时候,比如 ListView、RecyclerView 等,由于用户不断地上下滑动,某个 Bitmap 可能会被短时间内加载并销毁多次。这种情况下通过使用适当的缓存,可以有效地减缓 GC 频率保证加载效率,提高界面的响应速度和流畅性。
LruCache(Least Recently Used)算法的核心思想就是 最近最少使用算法 。
内部维护了一个 LinkHashMap 的链表,通过put数据的时候判断是否内存已经满了,如果满了,则将最近最少使用的数据给剔除掉,从而达到内存不会爆满的状态。
HBITMAP bmpHandle = (HBITMAP)LoadImage(NULL);
CBitmap bitmap;
bitmapAttach(bmpHandle); //关联位图对象
BITMAP bmp;
bitmapGetBitmap(&bmp); //获取位图信息
CString s;
sFormat("宽度=%d 高度=%d", bmpbmWidth, bmpbmHeight);
HBITMAP hBmp;
//
BITMAP bmpInfo;
GetObject((HGDIOBJ)hBmp, sizeof(bmpInfo), &bmpInfo);
//bmpInfobmWidth和bmpInfobmHeight应该是你想要的
各点像素:
先创建一个DC(比如CreateDC("DISPLAY", 0, 0, 0)这样?),然后SelectObject把你的HBITMAP选进去,之后用GetPixel函数可以获取上面的像素点
以上就是关于如何获取image的高度和宽度全部的内容,包括:如何获取image的高度和宽度、Bitmap整理、VC++ 获取图片的尺寸大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)