我正在制作一个绘图应用程序,用户可以选择从图库中加载图片并进一步绘制。但是,如果照片的大小大于屏幕,则只能显示部分照片。
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();
}
我怎么能编码使图片可以
此外,在某些设备上运行它会发出java.lang.OutOfMemoryError
...而且它崩溃了...怎么可以解决这个问题?
非常感谢提前!!
答案 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);
您还可以设置解码时的高度和宽度, outWidth的BitmapFactory.Options和outHeight属性。
要克服outOfMemoryError
,您可以参考评论中指出的answer。
P.S。我写了那个相关的答案。
希望这会对你有所帮助。