【问题标题】:How to select a piece of an image to set the avatar如何选择一张图片来设置头像
【发布时间】:2011-10-19 20:38:03
【问题描述】:

我有一个应用程序,用户可以通过给自己拍照或从图库中挑选一张照片来设置自己的头像。我在其他应用程序中看到该用户在选择图像后会显示一个视图,用户可以在该视图中“绘制”一个矩形,选择他想用作头像的图像区域。 我想在我的应用程序中包含这种可能性。拍照后怎么办?

谢谢!

编辑:

我正在尝试这样做,但它会打开图片库而不是相机:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.setType("image/*");
            cameraIntent.putExtra("crop", "true");
            cameraIntent.putExtra("scale", "true");
            cameraIntent.putExtra("outputX", 100);
            cameraIntent.putExtra("outputY", 100);
            cameraIntent.putExtra("aspectX", 1);
            cameraIntent.putExtra("aspectY", 1);
            cameraIntent.putExtra("max-width", 30);
            cameraIntent.putExtra("max-height", 30);
            cameraIntent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(cameraIntent, IMAGEN_CAMARA);    

【问题讨论】:

    标签: android image-processing crop


    【解决方案1】:

    这就是我在我的一个使用此功能的应用程序中实现它的方式。这很简单。

    private void doTakePhotoAction() {
    // http://2009.hfoss.org/Tutorial:Camera_and_Gallery_Demo
    // http://stackoverflow.com/questions/1050297/how-to-get-the-url-of-the-captured-image
    // http://www.damonkohler.com/2009/02/android-recipes.html
    // http://www.firstclown.us/tag/android/
    // The one I used to get everything working: http://groups.google.com/group/android-developers/msg/2ab62c12ee99ba30 
    
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    
    //Wysie_Soh: Create path for temp file
    mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
                        "tmp_contact_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
    
    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
    
    try {
        intent.putExtra("return-data", true);
        startActivityForResult(intent, PICK_FROM_CAMERA);
    } catch (ActivityNotFoundException e) {
        //Do nothing for now
    }
    }
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != RESULT_OK) {
        return;
    }
    
    switch (requestCode) {
    
    case CROP_FROM_CAMERA: {
        //Wysie_Soh: After a picture is taken, it will go to PICK_FROM_CAMERA, which will then come here
        //after the image is cropped.
    
        final Bundle extras = data.getExtras();
    
        if (extras != null) {
            Bitmap photo = extras.getParcelable("data");
    
            mPhoto = photo;
            mPhotoChanged = true;
            mPhotoImageView.setImageBitmap(photo);
            setPhotoPresent(true);
        }
    
        //Wysie_Soh: Delete the temporary file                        
        File f = new File(mImageCaptureUri.getPath());            
        if (f.exists()) {
            f.delete();
        }
    
        InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        mgr.showSoftInput(mPhotoImageView, InputMethodManager.SHOW_IMPLICIT);
    
        break;
    }
    
    case PICK_FROM_CAMERA: {
        //After an image is taken and saved to the location of mImageCaptureUri, come here
        //and load the crop editor, with the necessary parameters (96x96, 1:1 ratio)
    
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setClassName("com.android.camera", "com.android.camera.CropImage");
    
        intent.setData(mImageCaptureUri);
        intent.putExtra("outputX", 96);
        intent.putExtra("outputY", 96);
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("scale", true);
        intent.putExtra("return-data", true);            
        startActivityForResult(intent, CROP_FROM_CAMERA);
    
        break;
    
    }
    }
    

    }

    希望对你有帮助:)

    【讨论】:

    • 我试过了,但它给了我一个例外,因为它似乎找不到 CROP 类...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多