Android从相册选择图片剪切和上传
程序员文章站
2023-12-19 23:07:22
本文实例为大家分享了android剪切和上传图片的具体代码,供大家参考,具体内容如下
1、从android系统相册选择一张图片getimagefromalbum():...
本文实例为大家分享了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 文件上传服务器... }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。