android 为了兼容不同手机 拍照不允许保存 和 获取图片;获取圆角图片 正方形图片 跳转到相册 ; 和返回值
来源:互联网 发布:淘宝数据分析表格 编辑:程序博客网 时间:2024/05/16 12:17
跳转到相册:
// 打开系统相册private void gotoGallery() {Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent, REQUEST_GALLERY);// Intent intent = new Intent();// intent.setType("image/*");// intent.setAction(Intent.ACTION_PICK);// startActivityForResult(intent, SELECT_PICTURE);}
跳转到相机界面:
// 打开系统相机private void gotoCamera() {// mCameraLib=new CameraLib();Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动时自定义图片保存地址; 某些照相机途径是固定的,不然不给保存// Uri outPutUri = Uri.fromFile(new File(filePath));// intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);String filename = "head" + ".jpg";ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.TITLE, filename);Uri preDefinedCameraUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);Log.e(TAG, "preDefinedCameraUri = " + preDefinedCameraUri.getPath() + " filename = " + filename);intent.putExtra(MediaStore.EXTRA_OUTPUT, preDefinedCameraUri);startActivityForResult(intent, REQUEST_CAMERA);}
2016-11-29日增加功能
// 打开系统相机private void gotoCamera() {// mCameraLib=new CameraLib();Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动时自定义图片保存地址; 某些照相机途径是固定的,不然不给保存// Uri outPutUri = Uri.fromFile(new File(filePath));// intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);String filename = "head" + ".jpg";ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.TITLE, filename);values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");//设置图片的格式//values.put(MediaStore.Images.Media.SIZE, 1024*50);//设置图片大小:1024B*1=1K//values.put(MediaStore.Images.Media.WIDTH, 320);//设置图宽:单位 为分辨率单位,一个像素;//values.put(MediaStore.Images.Media.HEIGHT, 480);//设置图高:单位 为分辨率单位,一个像素;Uri preDefinedCameraUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);Log.e(TAG, "preDefinedCameraUri = " + preDefinedCameraUri.getPath() + " filename = " + filename);intent.putExtra(MediaStore.EXTRA_OUTPUT, preDefinedCameraUri);startActivityForResult(intent, REQUEST_CAMERA);}
获取第一次拍照图片:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// if (resultCode==Activity.RESULT_OK) {Log.e(TAG, "onActivityResult");switch (requestCode) {case REQUEST_CAMERA:// 系统相机返回// 方法一:这个卡,需要放在子线程执行。// 我们要的是一个小头像,不需要存大图片。final String cameraPath_Icon=BitmapHelper.getLastPhotoByPath();final File file = new File(cameraPath_Icon);spLoading.show();new Thread(){@Overridepublic void run() {if (file.exists()) {//if (BitmapHelper.getDegress(cameraPath_Icon) == 0) {Uri uri = Uri.fromFile(file);gotoCrop(uri);Log.e(TAG, "onActivityResult");} else {BitmapHelper.saveBitmap2RotateFilePath(cameraPath_Icon);Uri uri = Uri.fromFile(file);gotoCrop(uri);}}runOnUiThread(new Runnable() {@Overridepublic void run() {spLoading.dismiss();Log.e(TAG, "runOnUiThread");}});}}.start();break;case REQUEST_GALLERY:// 系统相册返回// 注意:系统相册返回进入剪切,需要真机测试if (data != null) {Uri uri = data.getData();gotoCrop(uri);}break;case REQUEST_CROP:// 图片剪裁返回if (data != null) {// 在这里进行存储和旋转。???Bitmap bmp = data.getParcelableExtra("data"); if (bmp==null) {bmp=BitmapFactory.decodeFile(filePath_Icon);}bmp = getRoundCornerBitmap(bmp, 360);headIcon.setImageBitmap(bmp);sendNotifyBroad();// 然后将图片保存到本地,和将图片的本地存储地址 保存到本地数据库中}break;// case REQUEST_CAMERA:// break;}// }}
跳转到剪切图片界面:
// 打开图片剪切private void gotoCrop(Uri inputRri) {Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(inputRri, "image/*");intent.putExtra("crop", "true");intent.putExtra("aspectX", 1); // 设置剪切框的比例intent.putExtra("aspectY", 1);intent.putExtra("outputX", 150); // 图片输出大小intent.putExtra("outputY", 150); // 图片输出大小intent.putExtra("noFaceDetection", true);intent.putExtra("return-data", true);intent.putExtra("circleCrop", "true");// 是否进入圆角剪裁框Uri outPutUri = Uri.fromFile(new File(filePath_Icon));intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);// 剪裁的图片存放的位置startActivityForResult(intent, REQUEST_CROP);}获取圆图片:
/** * 获取圆角位图的方法 * * @param bitmap * 数据源 * @param pixels * 圆角角度,360是圆形 * @return */private Bitmap getRoundCornerBitmap(Bitmap bitmap, int pixels) {Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);// 获取高像素的图片Canvas canvas = new Canvas(output);final int color = 0xff424242;final Paint paint = new Paint();final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());final RectF rectF = new RectF(rect);final float roundPx = pixels;paint.setAntiAlias(true);canvas.drawARGB(0, 0, 0, 0);paint.setColor(color);canvas.drawRoundRect(rectF, roundPx, roundPx, paint);paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));canvas.drawBitmap(bitmap, rect, rect, paint);return output;}获得正方行图片:
/** * Bitmap 处理获取到正方形的图片 * * @param bitmap * @return */public static Bitmap bitmapSquareCrop(Bitmap bitmap) {int w = bitmap.getWidth(); // 得到图片的宽,高int h = bitmap.getHeight();int wh = w > h ? h : w;// 裁切后所取的正方形区域边长int retX = w > h ? (w - h) / 2 : 0;// 基于原图,取正方形左上角x坐标int retY = w > h ? 0 : (h - w) / 2;// 下面这句是关键return Bitmap.createBitmap(bitmap, retX, retY, wh, wh, null, false);}
0 0
- android 为了兼容不同手机 拍照不允许保存 和 获取图片;获取圆角图片 正方形图片 跳转到相册 ; 和返回值
- Android拍照和获取相册图片
- android 拍照和相册图片获取
- android 调用系统相册选取照片或者打开相机拍照获取图片,返回时回到手机桌面,然后才会跳转到当前activity
- android 调用系统相册选取照片或者打开相机拍照获取图片,返回时回到手机桌面,然后才会跳转到当前activity
- Android中拍照截取和相册获取图片截取
- android 拍照+从手机相册选择返回图片到imagview
- Unity3D,获取相册图片,手机拍照
- 手机拍照或者相册获取图片总结
- android 拍照或从相册获取图片 返回 bitmap
- android相册拍照保存图片到本地
- Android部分手机拍照上传返回为空处理,和拍照后图片压缩后保存到指定路径下
- Android调用手机摄像头和相册获取图片
- android中获取手机相机和相册可以传多张图片
- 拍照相册和裁剪保存图片集合
- Android 拍照/相册 获取图片裁剪显示
- android获取相册图片 拍照获取图片 用到的东西
- Android 拍照获取图片和图库获取图片
- 2016湘潭邀请赛 xtu 1243 矩阵快速幂
- JavaWeb常见问题
- Linux安装rzse,MySQL,Tomcat,JDK
- 5-17 汉诺塔的非递归实现 (25分)
- 179. Largest Number
- android 为了兼容不同手机 拍照不允许保存 和 获取图片;获取圆角图片 正方形图片 跳转到相册 ; 和返回值
- NeHe OpenGL 教学全代码共享+全部演示
- fedora下安装pyqt4
- 怎么解决Android Studio导入项目卡死
- Android中Service知识点总结
- nginx日志配置
- C++_标准库类型_string
- 算术表达式的前缀式、中缀式、后缀式相互转换
- ASP.NET Core 介绍和项目解读