6

调整位图大小的最佳方法是什么?

使用

options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.mandy_moore, options);

或者

Bitmap resizedbitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true);
4

3 回答 3

13

使用它来创建与原始图像保持相同纵横比的采样图像。这是调整大小的最佳方式。

options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.mandy_moore, options);
Bitmap resizedbitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true);

这将在提供的 w 和 h 中缩放位图。这可能会扭曲位图。

根据您的需要使用。

于 2013-01-27T11:40:39.513 回答
13

调整位图大小的最佳方法是什么?

这取决于您需要的灵活性:

options.inSampleSize = N;意味着您将获得比原始图像小 N 倍的图像。基本上,解码器将每 N 个像素读取 1 个像素。

如果您不需要特定大小的位图,但需要将其变小以使用更少的内存,请使用该选项。这对于阅读大图像特别有用。

Bitmap.createScaledBitmap另一方面为您提供更多控制:您可以精确地指示位图的最终尺寸,...

最好的方法是结合使用这两种方法:

  1. 确定可用于有效解码源图像的最大值inSampleSize(使得解码后的图像仍然大于您需要的最终尺寸)
  2. 用于Bitmap.createScaledBitmap精确控制生成的大小
于 2013-01-27T11:46:52.803 回答
-1

createScaledBitmap 方法产生低质量图像

从这篇文章中获取建议位图图像质量

于 2013-01-27T11:45:08.027 回答