Android从相册选择图片剪切和上传
更新时间:2017年02月04日 14:42:01 作者:SunFlower_12
这篇文章主要为大家详细介绍了Android从相册选择一个图片剪切、上传的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Android剪切和上传图片的具体代码,供大家参考,具体内容如下
1、从Android系统相册选择一张图片getImageFromAlbum():
/** * 从图库获得照片 */ protected void getImageFromAlbum() { isImgs = true; // MainApplication.changeSettingStateus = true; Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*");// 相片类型 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 360); intent.putExtra("outputY", 360); intent.putExtra("scale", true); intent.putExtra("return-data", true); // intent.putExtra("outputFormat", // Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); // no face detection startActivityForResult(intent, 1); }
2、在onActivityResult()方法中:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { String text; switch (requestCode) { case 1: Uri selectedImage = data.getData(); CutPic(selectedImage); break; case 3:// 对图片进行剪切 if (data != null) { Bitmap bitmap = data.getParcelableExtra("data"); temps = zoomImage(bitmap, 360, 360); // 上传图片 uploadImg(temps); } break; default: break; } } }
3、图片剪切 CutPic(selectedImage);
/** * 将图片裁剪到指定大小 * * @param uri * @param size * @param flag */ public void CutPic(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", true);// 设置Intent中的view是可以裁剪的 // 设置宽高比 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 设置裁剪图片的宽高 intent.putExtra("outputX", 360); intent.putExtra("outputY", 360); intent.putExtra("outputFormat", "JPEG");// 图片格式 // 设置是否返回数据 intent.putExtra("return-data", true); // 开启一个带有返回值的Activity,请求码为3 startActivityForResult(intent, 3); }
4、图片压缩剪切zoomImage(bitmap, 360, 360);
/*** * 图片的缩放方法 * * @param bgimage * :源图片资源 * @param newWidth * :缩放后宽度 * @param newHeight * :缩放后高度 * @return */ public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap; }
5、上传图片文件至服务器uploadImg(bitMaps);
/** * 上传图片 * * @param bitP */ private void uploadImg(final Bitmap bitP) { // 将Bitmap转换成字符串 String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(); bitP.compress(CompressFormat.JPEG, 100, bStream); byte[] bytes = bStream.toByteArray(); string = Base64.encodeToString(bytes, Base64.DEFAULT); try { bStream.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //string 文件上传服务器... }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Kotlin中List的Lambda表达式应用与解析实例详解
相比于Java的Lambda表达式只是一种简化写法,Kotlin中的Lambda功能极为强大,本文介绍Kotlin中List的Lambda表达式应用与解析,感兴趣的朋友一起看看吧2024-03-03Android 弹出Dialog时隐藏状态栏和底部导航栏的方法
这篇文章主要介绍了Android 弹出Dialog时隐藏状态栏和底部导航栏的实例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-07-07鸿蒙手机版JNI实战案例解析(JNI开发、SO库生成、SO库使用)
这篇文章主要介绍了鸿蒙手机版JNI实战(JNI开发、SO库生成、SO库使用)的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-04-04
最新评论