即时通讯使用基本程序将图像从我的手机导入我写的应用程序,它工作正常。 唯一的问题是,当我要导入高分辨率照片(+9 Mpx)时,照片不会出现
setContentView(R.layout.activity_create_new_user);
contactImgView = (ImageView) findViewById(R.id.ChosenPhoto);
public void onActivityResult(int reqCode,int resCode, Intent data) {
contactImgView.setImageURI(data.getData());
}
public void AddPicture(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select contact image"),1);
}
答案 0 :(得分:1)
解决方案是使用一个名为Picasso的超棒库来代替使用位图直接加载图像,它的速度非常快。
将picasso jar文件添加到项目中,使用picasso加载像这样的图像
Picasso.with(context).load(new File(title)).centerCrop()
.resize(150, 150).error(R.drawable.ic_launcher).into(imageview);
其中title是您要加载的图像路径。裁剪,调整大小,错误是可选的。 你也可以从网址加载图片。
答案 1 :(得分:0)
这可能是因为它的分辨率太高了。
您必须使用BitmapFactory方法解码该位图,BitmapFactory.Options首先使用inJustDecodeBounds检测图像分辨率,然后计算outWidth * outHeight> moreThenAppCanHandle你可以使用具有适当因子的inSampleSize对其进行解码,这将适当地降低输出图像分辨率,这意味着消耗更少的内存。
希望这会起作用,并会帮助你。