android - 使用(整数)缩放尽可能快地绘制位图

标签 android canvas bitmap

我有一个 640x480 RGB_565 格式的位图,我需要尽快在更高分辨率的显示器上绘制它。位图填满整个屏幕并不重要,只要它填满大部分即可。

因此,我的一个想法是绘制一个双倍大小的位图 1280x960,以便原始图像中的每个像素整齐地映射到屏幕上的 4 个像素。从理论上讲,这应该比缩放到一些笨拙的分数要快得多。但我不确定究竟如何利用这一点。

任何可能的 canvas.drawBitmap 函数会注意到简单的 x2 计算并更快地执行操作吗?我是否应该先制作双倍大小的位图,然后在不缩放的情况下绘制更大的位图?最快的方法是什么?

最佳答案

Mick,据我了解 - 这是我的回答,可以帮助您。

我也遇到过类似的问题。在阅读了一些关于位图操作的帖子后——我了解到在位图上进行任何逐像素操作在 Android 上都非常慢。

对于您的问题,可以使用内置函数缩放位图(通常比逐像素操作更快)。这是使用内置函数的方法:

bitmapProcessed = Bitmap.createScaledBitmap(originalBitmap, NewWidth, NewHeight, true);

在你的情况下,

NewWidth  = 2 * originalBitmap.getWidth();
NewHeight = 2 * originalBitmap.getHeight();

由此产生的图像通常不是很好。如果你想让它更清晰,以匹配更高分辨率的显示器——我建议做一个双三次插值。

希望对您有所帮助。

关于android - 使用(整数)缩放尽可能快地绘制位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248940/

相关文章:

android - 构建扫描不适用于 Android 中的 Gradle

java - 在 Android 中使用 FlightAware API

Javascript Canvas 箭头 - 箭头不指向行尾

delphi - 如何更改 32 位 TBitmap 中特定颜色的 alpha 值?

android - PubNative Android 在 ListView 中显示多个广告

java - Android facebook webdialog 网络错误 (netstack : lib_mgr error)

javascript - 如何从事件函数的模块模式中调用函数

javascript - 在绘制矩形之前更改 lineCap 和 lineJoin 没有任何作用?

java - 如何将位图数组添加到 ArrayList?

android - OpenCV android中MAT的大小仍然是1920*2560*CV_8UC4