缩放位图的方法之间的区别

在Android中至less有两种扩展位图的方法,一种是在解码位图源时使用“BitmapFactory.Options”中的“inScaled,inDensity,inTargetDensity”。 另一种是在“Bitmap.createBitmap”中使用“Matrix”。

我很好奇的是这两种方法的区别是什么? 生成的位图的质量如何? 内存使用情况如何? 等等…

Solutions Collecting From Web of "缩放位图的方法之间的区别"

BitmapFactory与适当的inScale选项一起使用可以使您的内存效率高于使用matrix比例的Bitmap.createScaledBitmap()Bitmap.createBitmap() 。 但是,这更复杂。

看看如何在不首先读取整个图像的情况下就地调整stream式位图? 了解详情。

我发现的一个区别是,使用BitmapFactory的options.inSampleSize来缩放位图并不是精确的,因为缩放比例将是1 / inSampleSize,并且因为inSampleSize必须是一个整数,所以缩放比例为1/2, 1/3,1/4等,但没有比这更细粒度的。

Bitmap.createScaledBitmap() ,尽pipe更多的内存密集型,允许更多的粒度缩放,​​高达1dp的分辨率。

没有什么“大”的区别。 虽然使用BitmapFactory.Options一个好处是,您可以检查您的Bitmap的宽度/高度,而无需为实际Bitmap的像素分配内存。

此外,您可以轻松查看BitmapFactory.Options具有哪些选项 ,并将其与Bitmap.createBitmap()进行比较。 一般来说, BitmapFactory.Options就像一个“工具”API,使解码和采样Bitmap更容易。