欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 通过Intent调用系统拍照程序出现图片太小的问题解决办法

程序员文章站 2022-08-08 11:38:00
android 通过intent调用系统拍照程序出现图片太小的问题解决办法 intent it = newintent("android.media.action...

android 通过intent调用系统拍照程序出现图片太小的问题解决办法

intent it = newintent("android.media.action.image_capture");
startactivityforresult(it, activity.default_keys_dialer);

按下拍照键后,会返回到你的activity,所以你的activity要在onactivityresult方法里加一个处理,

protectedvoidonactivityresult(intrequestcode, intresultcode, intent data) {
   super.onactivityresult(requestcode, resultcode, data);
   try{
     bundle extras = data.getextras();
     bitmap b = (bitmap) extras.get("data");
     take = b;
     imageview img = (imageview)findviewbyid(r.id.image);
     img.setimagebitmap(take);
   }catch(exception e){
   }
 
}

但是这样你会发现这个bitmap尺寸太小了。明显是被压缩过了,要像返回未被压缩的照片,那么你要给调用系统拍照程序intent加上参数,指定图片输出的位置。

intent it = newintent("android.media.action.image_capture");
it.putextra(mediastore.extra_output, uri.fromfile(newfile(f.sd_card_temp_photo_path)));
startactivityforresult(it, activity.default_keys_dialer);

这样就是大图片返回了。

protectedvoidonactivityresult(intrequestcode, intresultcode, intent data) {
   super.onactivityresult(requestcode, resultcode, data);
   try{
     imageview img = (imageview)findviewbyid(r.id.image);
     take = u.resizebitmap(u.getbitmapforfile(f.sd_card_temp_photo_path), 640);
     img.setimagebitmap(take);
     imgflag = true;
   }catch(exception e){
 
   }
 
}

另外注意一下,返回的那个bitmap会很大,你用完以后要把它回收掉,不然你很容易内存报oom错误

public static bitmap resizebitmap(bitmap bitmap, intnewwidth) {
 
   intwidth = bitmap.getwidth();
   intheight = bitmap.getheight();
   floattemp = ((float) height) / ((float) width);
   intnewheight = (int) ((newwidth) * temp);
   floatscalewidth = ((float) newwidth) / width;
   floatscaleheight = ((float) newheight) / height;
   matrix matrix = newmatrix();
   // resize the bit map
   matrix.postscale(scalewidth, scaleheight);
   // matrix.postrotate(45);
   bitmap resizedbitmap = bitmap.createbitmap(bitmap, 0, 0, width, height, matrix, true);
   bitmap.recycle();
   return resizedbitmap;
 
}

以上就是android 调用系统拍照出现问题的解决办法,如有疑问大家请留言讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!