欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android从相册选择图片剪切和上传

程序员文章站 2024-02-13 15:17:46
本文实例为大家分享了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 文件上传服务器...
  }

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