安卓裁剪上传保存头像
2015-02-04 10:29
176 查看
private String[] items = new String[] { "图库", "拍照" }; private static final int IMAGE_REQUEST_CODE = 0; private static final int CAMERA_REQUEST_CODE = 1; private static final int RESULT_REQUEST_CODE = 2; public void headphoto(View view) { new AlertDialog.Builder(this) .setTitle("设置头像") .setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: Intent intentFromGallery = new Intent(); intentFromGallery.setType("image/*"); // 设置文件类型 intentFromGallery .setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intentFromGallery, IMAGE_REQUEST_CODE); break; case 1: Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri .fromFile(new File(Environment .getExternalStorageDirectory()+ "/head/", "temp.jpg"))); startActivityForResult(intent, CAMERA_REQUEST_CODE); break; } } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 结果码不等于取消时候 if (resultCode != RESULT_CANCELED) { switch (requestCode) { case IMAGE_REQUEST_CODE: startPhotoZoom(data.getData()); break; case CAMERA_REQUEST_CODE: File picture = new File( Environment.getExternalStorageDirectory() + "/head/temp.jpg"); startPhotoZoom(Uri.fromFile(picture)); break; case RESULT_REQUEST_CODE: if (data != null) { getImageToView(data); } break; } } super.onActivityResult(requestCode, resultCode, data); } /** * 裁剪图片方法实现 * * @param uri */ public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 设置裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 320); intent.putExtra("outputY", 320); intent.putExtra("return-data", true); startActivityForResult(intent, 2); } /** * 保存裁剪之后的图片数据 * * @param picdata */ private void getImageToView(Intent data) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); Drawable drawable = new BitmapDrawable(photo); head.setImageDrawable(drawable); savePic(photo); } } /** * @param bitmap * @throws 保存图片到本地 */ public void savePic(Bitmap b) { FileOutputStream fos = null; try { String path = (Environment.getExternalStorageDirectory() .getAbsolutePath() + "/head/"); File file = new File(path); if (!file.exists()) { file.mkdirs(); } File f = new File(path, "head.png"); if (f.exists()) { f.delete(); } fos = new FileOutputStream(f); if (null != fos) { b.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * @param 读取照片 * @return */ public static Bitmap getDiskBitmap(String pathString) { Bitmap bitmap = null; try { File file = new File(pathString); if (file.exists()) { bitmap = BitmapFactory.decodeFile(pathString); } } catch (Exception e) { } return bitmap; } String path = (Environment.getExternalStorageDirectory() .getAbsolutePath() + "/bbpet/head/head.png"); Bitmap bitmap = MyDataActivity.getDiskBitmap(path); if (bitmap != null) { headimg.setImageBitmap(bitmap); } else { headimg.setBackgroundResource(R.drawable.ic_launcher); }
相关文章推荐
- 安卓 获取imageview的bitmap,并保存,用于app头像上传获取
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。
- 【jQuery插件】使用cropper实现简单的头像裁剪并上传
- 安卓拍照在本地保存,并上传至服务器知识准备
- 头像的裁剪修改(可使用摄像头)与上传服务器(SSM实现)
- Android上传头像代码,相机,相册,裁剪
- 安卓 : 圆形头像加选择图片上传
- android裁剪头像上传
- 个人界面 < 头像 > 图片选择(相册,拍照)--如何调用系统的相册,裁剪并且上传
- 用CropBox实现用户头像裁剪上传与Java后台交互
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。
- PHP调用微信JS-SDK接口上传头像保存到服务器
- flash + php头像上传预览裁剪组件1.8
- 安卓简单接口上传头像
- 个人信息页面的修改及头像的裁剪上传
- IOS开发从手机相册中上传头像到APP的个人中心同时保存到数据库
- PHP Uploadify+jQuery.imgAreaSelect插件+AJAX 实现图片上传裁剪 仿微博头像上传功能
- js+java实现的头像上传和裁剪,完美兼容各种浏览器
- ASP.NET简单实现APP中用户个人头像上传和裁剪
- Retrofit+RxJava+OkHttp封装类请求接口数据→原生登录,注册,个人信息页+设置用户头像(图片上传或拍照)+SharedPreferences保存信息+Fresco加载图片+Mvp分层