0

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

   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. 加载这样可以拉动图像以占据全屏

此外,在某些设备上运行它会发出java.lang.OutOfMemoryError...它崩溃了...如何解决?

提前谢谢了!!

4

1 回答 1

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);

您还可以使用 BitmapFactory.Options的outWidth和 outHeight 属性设置解码时的高度和宽度。

为了克服这个问题,outOfMemoryError您可以参考评论中指出的答案

PS我写了那个链接的答案。

希望这会帮助你。

于 2013-02-02T09:03:31.010 回答