安卓图片操作(调用系统相机,预览本地照片,调用系统裁剪图片,压缩图片,中心裁剪方形图片,bitmap转byte[])
来源:互联网 发布:搜狗 算法研究员 面试 编辑:程序博客网 时间:2024/06/06 12:38
先创建照片存储uri
public static Uri createImagePathUri(Context context) { Uri imageFilePath = null; String status = Environment.getExternalStorageState(); SimpleDateFormat timeFormatter = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA); long time = System.currentTimeMillis(); String imageName = timeFormatter.format(new Date(time)); ContentValues values = new ContentValues(3); values.put(MediaStore.Images.Media.DISPLAY_NAME, imageName); values.put(MediaStore.Images.Media.DATE_TAKEN, time); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); if (status.equals(Environment.MEDIA_MOUNTED)) { imageFilePath = context.getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); } else { imageFilePath = context.getContentResolver().insert( MediaStore.Images.Media.INTERNAL_CONTENT_URI, values); } return imageFilePath;}
一、activity中调用系统相机获取图片。
//启动系统相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, createImagePathUri(context));
startActivityForResult(intent, req_code_opencamera);
//拍照返回@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == MainActivity.this.RESULT_CANCELED) { return; } switch (requestCode) { case req_code_opencamera: //照片已存储在路径uri,可进行想要的操作(裁剪图片等) break; case req_code_openlocalpic: //选择本地照片返回,获得照片uri,可进行想要的操作(裁剪图片等) Uri localUri=data.getData(); braek; case req_code_croppic: Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), cropImageUri); break; }}
二、预览本地照片并选择
Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(intent, req_code_openlocalpic);
三、调用系统裁剪图片
public static void cropImage2(Activity activity, Uri srcUri) { //创建裁剪后照片的存储uri //srcUri为被选中的照片的uri Uri cropImageUri = createImagePathUri(activity); Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(srcUri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra(MediaStore.EXTRA_OUTPUT, ImageUtils.cropImageUri); intent.putExtra("return-data", false); activity.startActivityForResult(intent, req_code_croppic);}
四、压缩图片
public static void compresspic(String fileName){ Bitmap bitmap=BitmapFactory.decodeFile(fileName); File outputFile=new File(fileName); if (!outputFile.exists()) { outputFile.getParentFile().mkdirs(); //outputFile.createNewFile(); }else{ outputFile.delete(); } FileOutputStream out = null; try { out = new FileOutputStream(outputFile); bitmap.compress(Bitmap.CompressFormat.JPEG, 10, out); //参数一是压缩后的照片格式,参数二是压缩质量0-100 out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }}
五、以图片中心裁剪最大正方形(一般应用于相册预览等)
//将图片裁剪成正方形public static Bitmap centerSquareScaleBitmap(Bitmap bitmap) { if (null == bitmap) { return null; } Bitmap result = bitmap; int widthOrg = bitmap.getWidth(); int heightOrg = bitmap.getHeight(); //以图片短的边为标准 int length; length=widthOrg>=heightOrg?heightOrg:widthOrg; //以图片中心为中心裁剪 int x=(widthOrg-length)/2; int y=(heightOrg-length)/2; result=Bitmap.createBitmap(bitmap,x,y,length,length); return result;}
六、bitmap转byte[]
// 将bitmap转为byte格式的数组public static byte[] bmpToByteArray(final Bitmap bitmap, final boolean needRecycle) { // 创建字节数组输出流 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); // Bitmap.compress()方法的参数format可设置JPEG或PNG格式;quality可选择压缩质量;fOut是输出流(OutputStream) bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); if (needRecycle) { bitmap.recycle(); } // 将字节数组输出流转为byte数组 byte[] result = outputStream.toByteArray(); try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } return result;}
第一次发博客,内容简单实用,有错误可私信,谢谢。
2 0
- 安卓图片操作(调用系统相机,预览本地照片,调用系统裁剪图片,压缩图片,中心裁剪方形图片,bitmap转byte[])
- 调用系统相机拍照,裁剪图片
- 01 调用系统相机拍照,裁剪图片
- 调用系统相机和图库,裁剪图片
- 调用系统图片裁剪器
- 调用系统的裁剪功能裁剪图片
- 图片裁剪 调用系统裁剪intent
- Android7.0调用系统相机拍照、相册选择图片、裁剪 图片压缩
- 调用系统相册选取照片并使用系统裁剪图片
- Android调用系统相机、图库、裁剪图片并压缩上传(适配7.0)
- Android调用系统相机、图库、裁剪图片并压缩上传(适配7.0)
- Android调用系统的相机,图库,以及裁剪图片功能。
- Android 调用系统相机和图库,裁剪图片
- Android7.0调用系统相机拍照、相册选择图片、裁剪
- Android调用系统图库和相机获取图片并裁剪
- Android图片裁剪,合成(调用系统裁剪功能)
- android调用系统相机、调用系统相册,调用系统图片裁剪报错的解决方案
- Android中调用系统相机、系统相册来获取图片,并裁剪图片。
- __setup 在内核中的作用(转) 2
- php中的数值型字符串相加 相比较(> < ==)
- java语言中的继承
- 军训感悟
- 如何限制EditText输入的字符长度_王菲
- 安卓图片操作(调用系统相机,预览本地照片,调用系统裁剪图片,压缩图片,中心裁剪方形图片,bitmap转byte[])
- WebRTC第二步:搭建shadowsocks服务器
- struts2中使用注解配置Action
- ionic 开发中用到的时间选择器
- openssl生成 公钥 私钥 pair
- 【MySQL学习笔记】MySQL 启动过程
- Swift 属性 笔记更新
- 微信支付商户系统架构背后的故事
- web.xml中在Servlet中获取context-param和init-param内的参数