Android 缩放大位图的替代方法

Android 缩放大位图的替代方法,android,bitmap,scaling,Android,Bitmap,Scaling,首先,我知道推荐使用inJustDecodeBounds和inssamplesize以接近所需大小加载位图的方法。然而,这是一种相当广泛的方法,只能获得接近目标的图像 我曾想过使用选项.inDensity和选项.inTargetDensity来欺骗本机加载程序将图像更精确地缩放到所需的目标大小。基本上,我将选项。inDensity设置为图像的实际宽度,将选项设置为所需宽度。inTargetDensity设置为所需宽度,我确实获得了所需大小的图像(在这种情况下,纵横比恰好保持不变)。然后,我在生成

首先,我知道推荐使用
inJustDecodeBounds
inssample
size以接近所需大小加载位图的方法。然而,这是一种相当广泛的方法,只能获得接近目标的图像

我曾想过使用
选项.inDensity
选项.inTargetDensity
来欺骗本机加载程序将图像更精确地缩放到所需的目标大小。基本上,我将
选项。inDensity
设置为图像的实际宽度,将
选项设置为所需宽度。inTargetDensity
设置为所需宽度,我确实获得了所需大小的图像(在这种情况下,纵横比恰好保持不变)。然后,我在生成的图像上设置
image.setDensity(DENSITY\u NONE)
,所有设置都正常工作


有人知道这种方法有什么问题吗?关于内存效率和图像质量有什么想法吗?

我一直使用Opengl 2.0和surface View进行更好的图像管理。

听起来很棒!(不敢相信android开发人员编写了代码,但没有以理智和明智的方式公开功能)


我确实有一点担心。我有充分的理由相信Android无法处理任何一个维度都大于2048x2048像素的实例化位图。如果用于重新缩放的内部代码不够智能,则在加载大于2048x2048的位图时可能会失败。

我自己也在考虑这个问题,使用inDensity和inTargetDensity在解码时放大/缩小位图。它工作得很好,但不幸的是,它会产生非常糟糕的性能(动画)结果。我希望我可以用它作为一种“通用”的方法来放大/缩小解码,类似于inSampleSize,不幸的是它只用于下采样。似乎存在不同的本机实现:inSampleSize性能良好,没有明显的性能影响,其中inDensity/inTargetDensity引入了明显的性能影响(如慢动作)


还是我遗漏了什么?

听起来很棒!(不敢相信android开发人员编写了代码,但没有以理智和明智的方式公开功能)。听起来很酷!你能发布一个示例吗?我认为使用inSample可以更好地优化性能,不是吗?因为CPU/GPU更容易以这种方式处理采样,不是吗?我想人们可以将InSampleSize与这种方法结合起来。未测试,但如果您可以计算InSampleSize效果后图像的结果大小,并在options.inDensity中使用此选项,它可能会很好地工作。我现在已经按照上面的建议使用InSampleSize进行了测试,它确实似乎起到了作用。我想可以将InSampleSize与此方法结合起来。未测试,但如果您可以计算InSampleSize效果后图像的结果大小,并在options.inDensity中使用此选项,它可能会很好地工作。我建议,如果内存允许,建议在内存中预缩放图像以实现高效动画。