首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >drawBitmap与createScaledBitmap的性能差异

drawBitmap与createScaledBitmap的性能差异
EN

Stack Overflow用户
提问于 2014-02-16 15:21:45
回答 2查看 1.5K关注 0票数 0

为了支持不同大小的屏幕分辨率,我使用SurfaceView编程地缩放了安卓游戏应用程序中的位图。我使用drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)方法来执行它。我看到了一个名为Bitmap的createScaledBitmap方法,它可以根据现有位图创建一个新的位图。他们之间的表现有什么不同吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-16 15:48:06

是的,有。他们做的事情不一样。createScaledBitmap获取一个位图并在内存中创建一个新的缩放副本。它不把它放在画布上,这是一个新的位图对象,以后可以绘制到画布上。drawBitmap将位图绘制到画布上(可以由位图、曲面或屏幕支持),缩放它,应用来自画图对象的效果,尊重裁剪区域等。

你不应该使用drawBitmap,除非你真的想把它画到画布上--仅仅用它来缩放是没有效率的。如果您需要绘制并缩放它--如果您需要反复缩放它,并且内存不是问题,那么首先使用createScaledBitmap,然后绘制缩放的位图。如果您不需要再次绘制它,或者内存是一个问题,那么在绘制它时使用drawBitmap来缩放它。

票数 2
EN

Stack Overflow用户

发布于 2014-02-16 15:50:27

创建缩放位图不会绘制位图。它提供了一种在绘图前包含选项的方法。例如,您可以使用不同的插值技术,具体取决于原始图像的大小、旋转等相对于绘制的位置:

What does the filter parameter to createScaledBitmap do?

因此,如果您对drawBitmap的结果不满意,可以尝试使用缩放选项来改进位图。drawBitmap使用“自动”缩放,但没有指定使用什么。

与性能特别相关的是,createScaledBitmap使用本机方法"nativeCreate“,drawBitmap使用"native_drawBitmap”,因此它将因本机方法的平台实现而有所不同。无论如何,一旦位图缩放,就需要将位图绘制到画布上,因此无论哪种方式都需要"drawBitmap“,而且即使位图已经缩放,也不太可能提高性能。但是,如果您没有绘制它,那么使用"drawBitmap“就没有意义了,因为它会自动标注和使用资源来执行绘制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21813102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档