a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

android照相、相冊獲取圖片剪裁報錯的解決方法

2020-04-11 11:42:14
字體:
來源:轉載
供稿:網友

這是調用相機 

	public static File getImageFromCamer(Context context, File cameraFile,			int REQUE_CODE_CAMERA, Intent intent) {		intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);		File fileDir = HelpUtil.getFile(context, "/Tour/user_photos");		cameraFile = new File(fileDir.getAbsoluteFile() + "/"				+ System.currentTimeMillis() + ".jpg");		intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile));		((Activity) context).startActivityForResult(intent, REQUE_CODE_CAMERA);		return cameraFile;	}

在這里我返回了一個file對象,這是應為項目中需要,大家可以不必真寫,直接傳一個Uri對象過來就好了

 

下面是調用相冊

 

public static void getImageFromPhoto(Context context, int REQUE_CODE_PHOTO) {		Intent intent = new Intent(Intent.ACTION_PICK, null);		intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,				"image/*");		((Activity) context).startActivityForResult(intent, REQUE_CODE_PHOTO); 	}

當然接下來是調用Activity的OnActivityResult了

 

 

	@Override	protected void onActivityResult(int requestCode, int resultCode, Intent data) {		if (resultCode == RESULT_OK) {			switch (requestCode) {			case ConstantUtil.REQUE_CODE_CAMERA:				uri = Uri.fromFile(cameraFile);				PhotoUtil.startPhotoZoom(context, uri,						ConstantUtil.REQUE_CODE_CROP);				break;			case ConstantUtil.REQUE_CODE_PHOTO:				if (null != data) {//為了取消選取不報空指針用的					uri = data.getData();					PhotoUtil.startPhotoZoom(context, uri,							ConstantUtil.REQUE_CODE_CROP);				}				break;			case ConstantUtil.REQUE_CODE_CROP:				if(uri==null){					break;				}				cropBitmap=HelpUtil.getBitmapFromUri(uri,context);				if (cropBitmap != null) {					iv_headphoto.setImageBitmap(cropBitmap); 					baos = new ByteArrayOutputStream();					cropBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);					headPicString = new String(Base64.encode(							baos.toByteArray(), 0));					UploadPic(headPicString);				} 				break;			default:				break;			}		}

當然還有大家關心的剪切

public static void startPhotoZoom(Context context, Uri uri,			int REQUE_CODE_CROP) {		int dp = 500; 		Intent intent = new Intent("com.android.camera.action.CROP");		intent.setDataAndType(uri, "image/*");		// 下面這個crop=true是設置在開啟的Intent中設置顯示的VIEW可裁剪		intent.putExtra("crop", "true");		intent.putExtra("scale", true);// 去黑邊		intent.putExtra("scaleUpIfNeeded", true);// 去黑邊		// aspectX aspectY 是寬高的比例		intent.putExtra("aspectX", 1);//輸出是X方向的比例		intent.putExtra("aspectY", 1);		// outputX outputY 是裁剪圖片寬高,切忌不要再改動下列數字,會卡死		intent.putExtra("outputX", dp);//輸出X方向的像素		intent.putExtra("outputY", dp);		intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());		intent.putExtra("noFaceDetection", true);		intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);		intent.putExtra("return-data", false);//設置為不返回數據 		((Activity) context).startActivityForResult(intent, REQUE_CODE_CROP);	}

在很多博客中都把“return-data”設置為了true然后在onActivityResult中通過data.getParcelableExtra("data")來獲取數據,不過這樣的話dp這個變量的值就不能太大了,不然你的程序就掛了。這里也就是我遇到問題的地方了,在大多數高配手機上這樣用是沒有問題的,不過很多低配手機就有點hold不住了,直接就異常了,包括我們的國產神機米3也沒能hold住,所以我建議大家不要通過return data 大數據,小數據還是沒有問題的,說以我們在剪切圖片的時候就盡量使用Uri這個東東來幫助我們。

下面是我們進行剪裁用到的一些參數

Exta Options Table for image/* crop:

 

SetExtra DataType Description
crop String Signals the crop feature
aspectX int Aspect Ratio
aspectY int Aspect Ratio
outputX int width of output created from this Intent
outputY int width of output created from this Intent
scale boolean should it scale
return-data boolean Return the bitmap with Action=inline-data by using the data
data Parcelable Bitmap to process, you may provide it a bitmap (not tested)
circleCrop String if this string is not null, it will provide some circular cr
MediaStore.EXTRA_OUTPUT ("output") URI Set this URi to a File:///, see example code


最后把通過Uri獲得bitmap的方法給大家貼上

 

public static Bitmap getBitmapFromUri(Uri uri,Context mContext)	 {	 try	 {	  // 讀取uri所在的圖片	  Bitmap bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), uri);	  return bitmap;	 }	 catch (Exception e)	 {	  e.printStackTrace();	  return null;	 }	 }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西西做爰免费视频 | 欧美日韩在线观看视频 | 91精品久久久久久久久中文字幕 | 日韩在线视频观看 | 国产精品一区在线观看 | 在线免费中文字幕 | 日韩一区二区三区在线 | 国产噜噜噜噜噜久久久久久久久 | 日韩成人影院 | 欧美国产视频一区 | 国产美女黄色片 | www.国产精品| 可以看黄色的网站 | 日本成人在线视频网站 | 中文字幕视频在线 | 亚洲国产精品一区二区久久 | 久色视频在线 | 91亚洲精品国产 | 欧美一区二区免费 | 色福利影院 | 欧美日韩在线观看视频 | 国产精品高潮呻吟久久a | 久久这里只有精品首页 | 日韩欧美一级精品久久 | 色黄网站| 91伊人| av网站有哪些 | 欧美日韩精品一区二区 | 一区二区国产在线 | 九一午夜精品av | 毛片一区二区 | 成人精品一区二区三区中文字幕 | 国产98色在线 | 日韩 | 欧美第8页 | 在线视频日韩 | 一级一级国产片 | 亚洲成人黄色网 | 欧美日韩亚洲国内综合网 | 色偷偷噜噜噜亚洲男人 | 国产99久久精品一区二区永久免费 | 99riav国产精品 |