查看: 477|回复: 0

[手机开发] Android从相册选择图片剪切和上传

发表于 2017-7-16 09:30:15

本文实例为大家分享了Android剪切和上传图片的具体代码,供大家参考,具体内容如下

1、从Android系统相册选择一张图片getImageFromAlbum():

  1. /**
  2. * 从图库获得照片
  3. */
  4. protected void getImageFromAlbum() {
  5. isImgs = true;
  6. // MainApplication.changeSettingStateus = true;
  7. Intent intent = new Intent(Intent.ACTION_PICK);
  8. intent.setType("image/*");// 相片类型
  9. intent.putExtra("aspectX", 1);
  10. intent.putExtra("aspectY", 1);
  11. intent.putExtra("outputX", 360);
  12. intent.putExtra("outputY", 360);
  13. intent.putExtra("scale", true);
  14. intent.putExtra("return-data", true);
  15. // intent.putExtra("outputFormat",
  16. // Bitmap.CompressFormat.JPEG.toString());
  17. intent.putExtra("noFaceDetection", true); // no face detection
  18. startActivityForResult(intent, 1);
  19. }
复制代码

2、在onActivityResult()方法中:

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. // TODO Auto-generated method stub
  4. super.onActivityResult(requestCode, resultCode, data);
  5. if (resultCode == RESULT_OK) {
  6. String text;
  7. switch (requestCode) {
  8. case 1:
  9. Uri selectedImage = data.getData();
  10. CutPic(selectedImage);
  11. break;
  12. case 3:// 对图片进行剪切
  13. if (data != null) {
  14. Bitmap bitmap = data.getParcelableExtra("data");
  15. temps = zoomImage(bitmap, 360, 360);
  16. // 上传图片
  17. uploadImg(temps);
  18. }
  19. break;
  20. default:
  21. break;
  22. }
  23. }
  24. }
复制代码

3、图片剪切 CutPic(selectedImage);

  1. /**
  2. * 将图片裁剪到指定大小
  3. *
  4. * @param uri
  5. * @param size
  6. * @param flag
  7. */
  8. public void CutPic(Uri uri) {
  9. Intent intent = new Intent("com.android.camera.action.CROP");
  10. intent.setDataAndType(uri, "image/*");
  11. intent.putExtra("crop", true);// 设置Intent中的view是可以裁剪的
  12. // 设置宽高比
  13. intent.putExtra("aspectX", 1);
  14. intent.putExtra("aspectY", 1);
  15. // 设置裁剪图片的宽高
  16. intent.putExtra("outputX", 360);
  17. intent.putExtra("outputY", 360);
  18. intent.putExtra("outputFormat", "JPEG");// 图片格式
  19. // 设置是否返回数据
  20. intent.putExtra("return-data", true);
  21. // 开启一个带有返回值的Activity,请求码为3
  22. startActivityForResult(intent, 3);
  23. }
复制代码

4、图片压缩剪切zoomImage(bitmap, 360, 360);

  1. /***
  2. * 图片的缩放方法
  3. *
  4. * @param bgimage
  5. * :源图片资源
  6. * @param newWidth
  7. * :缩放后宽度
  8. * @param newHeight
  9. * :缩放后高度
  10. * @return
  11. */
  12. public static Bitmap zoomImage(Bitmap bgimage, double newWidth,
  13. double newHeight) {
  14. // 获取这个图片的宽和高
  15. float width = bgimage.getWidth();
  16. float height = bgimage.getHeight();
  17. // 创建操作图片用的matrix对象
  18. Matrix matrix = new Matrix();
  19. // 计算宽高缩放率
  20. float scaleWidth = ((float) newWidth) / width;
  21. float scaleHeight = ((float) newHeight) / height;
  22. // 缩放图片动作
  23. matrix.postScale(scaleWidth, scaleHeight);
  24. Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width,
  25. (int) height, matrix, true);
  26. return bitmap;
  27. }
复制代码

5、上传图片文件至服务器uploadImg(bitMaps);

  1. /**
  2. * 上传图片
  3. *
  4. * @param bitP
  5. */
  6. private void uploadImg(final Bitmap bitP) {
  7. // 将Bitmap转换成字符串
  8. String string = null;
  9. ByteArrayOutputStream bStream = new ByteArrayOutputStream();
  10. bitP.compress(CompressFormat.JPEG, 100, bStream);
  11. byte[] bytes = bStream.toByteArray();
  12. string = Base64.encodeToString(bytes, Base64.DEFAULT);
  13. try {
  14. bStream.close();
  15. } catch (IOException e1) {
  16. // TODO Auto-generated catch block
  17. e1.printStackTrace();
  18. }
  19. //string 文件上传服务器...
  20. }
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报