【问题标题】:Draw bitmap as fast as possible with (whole number) scaling使用(整数)缩放尽可能快地绘制位图
【发布时间】:2014-03-07 11:32:43
【问题描述】:

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

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

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

【问题讨论】:

  • 查看带有 Matrix 参数的 drawBitmap

标签: android canvas bitmap


【解决方案1】:

米克,据我所知 - 这是我的回答,可以帮助你。

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

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

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

在你的情况下,

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

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

我希望这会有所帮助。

【讨论】:

  • 不要使用 Bitmap.createScaledBitmap 它会创建一个新的 Bitmap 实例,请参阅我上面的评论如何将它画得更大
  • @pskink - 是否可以通过设置矩阵参数对处理后的图像进行双三次插值。你的方法看起来更整洁。 :)
猜你喜欢
  • 2011-07-05
  • 2011-11-08
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
相关资源
最近更新 更多