Android拍照/选取相册后裁剪保存

在AppActivity.java文件中添加代码

    public static String imgPath = "";
    public static String imgName = "";
    public static int aspectX = 1;
    public static int aspectY = 1;
    public static int outputX = 300;
    public static int outputY = 300;

    private static final int CODE_GALLERY_REQUEST = 0xa0;
    private static final int CODE_CAMERA_REQUEST = 0xa1;
    private static final int CODE_RESULT_REQUEST = 0xa2;

    private static final String TAG = "Test";

    public static AppActivity s_activity = null;
    public static Context s_context = null;

 

在onCreate函数中添加

        s_activity = this;
        s_context = this.getApplicationContext();

 

修改onActivityResult函数

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK){
            switch (requestCode) {
                case CODE_GALLERY_REQUEST:
                    resizeImg(data.getData());
                    //resizePhoto(data.getData());
                    break;

                case CODE_CAMERA_REQUEST:
                    String path = getExternalCacheDir().getPath();
                    String name = "camera_img.png";
                    Uri imageUri = null;
                    File camerafile = new File(path,name);
                    imageUri = Uri.fromFile(camerafile);
                    resizeImg(imageUri);
                    //resizeCamera();
                    break;

                case CODE_RESULT_REQUEST:
                    s_activity.runOnGLThread(new Runnable() {
                        @Override
                        public void run() {
                            String js = "cc.NativeBridge.callSprite(";
                            String params = "'"+s_activity.imgPath+"'";
                            js = js + params + ");";
                            Cocos2dxJavascriptJavaBridge.evalString(js);
                        }
                    });
                    break;
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
        SDKWrapper.getInstance().onActivityResult(requestCode, resultCode, data);
    }

 

添加下面的代码

    public static void pickPhoto(String name, int aspectX, int aspectY, int outputX, int outputY)
    {
        s_activity.imgName = name;
        s_activity.aspectX = aspectX;
        s_activity.aspectY = aspectY;
        s_activity.outputX = outputX;
        s_activity.outputY = outputY;

        Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        s_activity.startActivityForResult(intent, CODE_GALLERY_REQUEST);
    }

    public static void pickCamera(String name, int aspectX, int aspectY, int outputX, int outputY)
    {
        s_activity.imgName = name;
        s_activity.aspectX = aspectX;
        s_activity.aspectY = aspectY;
        s_activity.outputX = outputX;
        s_activity.outputY = outputY;

        File outputfile = new File(s_activity.getExternalCacheDir(),"camera_img.png");

        try {
            if (outputfile.exists()){
                outputfile.delete();
            }
            outputfile.createNewFile();
        } catch (Exception e) {
            e.printStackTrace();
        }

        Uri imageuri = Uri.fromFile(outputfile);
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);

        s_activity.startActivityForResult(intent, CODE_CAMERA_REQUEST);
    }

    private void resizeImg(Uri uri)
    {
        try {
            Intent intent = new Intent("com.android.camera.action.CROP");
            File cropfile = new File(Environment.getExternalStorageDirectory().getPath(),s_activity.imgName);
            if (cropfile.exists()){
                cropfile.delete();
            }
            cropfile.createNewFile();
            imgPath = cropfile.getPath();
            Log.d(TAG, "##### "+cropfile.getPath());
            Uri imageUri = uri;
            Uri outputUri = null;
            outputUri = Uri.fromFile(cropfile);
            intent.putExtra("crop",true);
            // aspectX,aspectY 是宽高的比例,这里设置正方形
            intent.putExtra("aspectX",s_activity.aspectX);
            intent.putExtra("aspectY",s_activity.aspectY);
            //设置要裁剪的宽高
            intent.putExtra("outputX", s_activity.outputX);
            intent.putExtra("outputY",s_activity.outputY);
            intent.putExtra("scale",true);
            intent.putExtra("return-data",false);
            if (imageUri != null) {
                intent.setDataAndType(imageUri, "image/*");
            }
            if (outputUri != null) {
                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
            }
            intent.putExtra("noFaceDetection", true);
            intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

            startActivityForResult(intent, CODE_RESULT_REQUEST);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

转载于:https://my.oschina.net/valiancer/blog/2996183

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 仿QQ图片选择器,包含图片裁剪,浏览大图功能。   博客地址:http://blog.csdn.net/junzia/article/details/53091606简单使用示例如需使用图片选择器功能,将chooser加入为依赖工程,然后使用指定功能:选择单张图片如果需要选择单张图片,调用:Intent intent=new Intent(IcFinal.ACTION_ALBUM); intent.putExtra(IcFinal.INTENT_MAX_IMG,1);   startActivityForResult(intent,1);裁剪如果需要选择单张图片并且裁剪,调用:Intent intent=new Intent(IcFinal.ACTION_ALBUM); intent.putExtra(IcFinal.INTENT_IS_CROP,true); startActivityForResult(intent,1);默认为圆形图片,大小为500*500。如果需要自行设定,给intent增加以下参数(目前功能未实现):intent.putExtra(IcFinal.INTENT_CROP_SHAPE,CropPath.SHAPE_RECT);   //矩形intent.putExtra(IcFinal.INTENT_CROP_WIDTH,512); //裁剪宽度intent.putExtra(IcFinal.INTENT_CROP_HEIGHT,280); //裁剪高度选择多张图片Intent intent=new Intent(IcFinal.ACTION_ALBUM); intent.putExtra(IcFinal.INTENT_MAX_IMG,9); startActivityForResult(intent,1);更多设置也许图片选择器默认的UI不符合你的要求,你可以选择利用ChooserSetting中的静态参数来更改图片选择器的效果:/**标题的背景颜色*/public static int TITLE_COLOR=0xFF584512;/**图片选择页,每行显示数*/public static int NUM_COLUMNS=3;/**图片加载失败的图片*/public static int errorResId=0;/**图片加载的占位图片*/public static int placeResId=R.mipmap.image_chooser_placeholder;/**图片加载的动画*/public static int loadAnimateResId=0;/**选中图片的滤镜颜色*/public static int chooseFilter=0x55000000;/**未被选中的图片的滤镜颜色*/public static int unChooseFilter=0;/**最新的图片集合显示名字*/public static String newestAlbumName="最新图片";/**最新图片集合的最大数量*/public static int newestAlbumSize=100;public static int albumPopupHeight=600;public static String tantoToast="";/**照片选择指示器*/public static IChooseDrawable chooseDrawable=new CircleChooseDrawable(true,0xFF25c2e6);如果这些也无法满足你的UI要求,你也可以参照EntryActivity重新写相册的入口Activity,参照CropActivity重写裁剪的入口Activity。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值