android加载图像到最大允许大小

时间:2013-02-02 08:51:00

标签: android canvas

我正在制作一个绘图应用程序,用户可以选择从图库中加载图片并进一步绘制。但是,如果照片的大小大于屏幕,则只能显示部分照片。

   public void load_pic(String picturePath) // load a picture from gallery
   {
      bitmap = (BitmapFactory.decodeFile(picturePath)).copy(Bitmap.Config.ARGB_8888, true);
      bitmapCanvas = new Canvas(bitmap);
      invalidate();
   }

我怎么能编码使图片可以

  1. 加载,以适应最大允许的屏幕宽度或高度,或
  2. 加载可以拉动图像以占据全屏
  3. 此外,在某些设备上运行它会发出java.lang.OutOfMemoryError ...而且它崩溃了...怎么可以解决这个问题?

    非常感谢提前!!

1 个答案:

答案 0 :(得分:0)

首先,您需要找到可以使用以下代码完成的屏幕宽度和高度。

Display display = getWindowManager().getDefaultDisplay();
int newWidth = display.getWidth();
int newHeight = display.getHeight();

如果您没有参加活动,可以按照以下说明进行显示,

WindowManager wm = (WindowManager) mContex.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

您可以使用以下代码缩放位图。

Bitmap scaled = Bitmap.createScaledBitmap(oldBitmap, newWidth, newHeight, true);

您还可以设置解码时的高度和宽度, outWidthBitmapFactory.Options和outHeight属性。

要克服outOfMemoryError,您可以参考评论中指出的answer

P.S。我写了那个相关的答案。

希望这会对你有所帮助。