缩放位图并保持纵横比

时间:2014-04-01 20:32:20

标签: android bitmap

我希望能够缩放比特图并保持宽高比不变。

我不需要将任何尺寸设置为特定尺寸, 我知道inSampleSize并不适用于负数,我也不喜欢 如果有的话就会发生类似的事情。

我尝试使用BitmapFactory.Options():inScaled,inTargetDensity和inDensity 但大小保持不变。我一定不能正确使用它们。

我想将它扩展到1倍或2倍,我可以得到任何东西 结果的宽度和高度。我真的很喜欢它 大约1.5倍,大小不是很大。

谢谢!

2 个答案:

答案 0 :(得分:1)

通常在解码位图时,您需要缩小比例,这样就不会遇到OOM。 inSampleSize请求解码器对原始图像进行二次采样,返回较小的图像以节省内存。

如果您尝试获取位图以覆盖整个视图,您可以设置imageView的scaleType以决定如何缩放它:

http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

以下是有关如何在需要时加载位图的链接: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

答案 1 :(得分:1)

查看了一些代码示例 并尝试了一些事情,这很好地解决了:

Matrix matrix = new Matrix();
matrix.postScale(1.5f, 1.5f);

iWidth = bitmap.getWidth();
iHeight = bitmap.getHeight();

Bitmap resizedBitmap = Bitmap.createBitmap(
    bitmap, 0, 0, iWidth, iHeight, matrix, false);

然后我使用了' resizedBitmap'在我的onDraw()中:

canvas.drawBitmap(resizedBitmap,
    scrollRect,
    displayRect,
    null);