Android 应用裁剪照片

Posted

技术标签:

【中文标题】Android 应用裁剪照片【英文标题】:Android app crop photo 【发布时间】:2016-11-21 03:24:41 【问题描述】:

我有一个问题。 这是我的应用程序已有的代码,它的工作方式如下:拍照 >crop > 上传。 我不想裁剪照片。我该怎么做?只是删除 dispatchCropImageIntent 方法?

  protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    Log.d(this.getClass().getSimpleName(), "onActivityResult");
    if (resultCode == RESULT_OK) 
        if (requestCode == REQUEST_IMAGE_CAPTURE) 
            File imageFile = new File(mCurrentPhotoPath);
            if (imageFile.exists()) 
               dispatchCropImageIntent(Uri.fromFile(imageFile));
            
         else if (requestCode == REQUEST_IMAGE_FROM_GALLERY_SELECT) 
            dispatchCropImageIntent(data.getData());
         else if (requestCode == REQUEST_PICTURE_CROP) 
            String filePath = Environment.getExternalStorageDirectory()
                    + "/temporary_holder.jpg";
            setCurrentBitmap(BitmapFactory.decodeFile(filePath));
         else if(requestCode == CAMERA_ACTIVITY_CODE)
            // Get path
            String path = data.getStringExtra(CustomCamera.OUT_PATH);

            // Read file
            byte[] imgData = AppFS.readFileFromPath(path);
            if (imgData != null) 
                Bitmap bitmap = BitmapFactory.decodeByteArray(imgData , 0, imgData.length);
                // TODO: Do something with the image, it should be okay
                //((ImageView)findViewById(R.id.img)).setImageBitmap(bitmap);
             else 
                Log.e("Main", "Data is null");
            
        
    
    else
        onBackPressed();
    

还有:

private void dispatchCropImageIntent(Uri uri) 
    Intent cropImageIntent = new Intent("com.android.camera.action.CROP");
    cropImageIntent.setDataAndType(uri, "image/*");
    cropImageIntent.putExtra("crop", "true");
    cropImageIntent.putExtra("noFaceDetection", true);
    cropImageIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    // retrieve data on return
    cropImageIntent.putExtra("return-data", true);
    File f = new File(Environment.getExternalStorageDirectory(),
            "/temporary_holder.jpg");
    try 
        f.createNewFile();
     catch (IOException ex) 
        Log.e("io", ex.getMessage());
    

    uri = Uri.fromFile(f);
    cropImageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(cropImageIntent, REQUEST_PICTURE_CROP);

【问题讨论】:

只需删除 dispatchCropImageIntent() 方法并获取该图像路径以供将来使用 【参考方案1】:

如果我的理解正确,您想让您的应用像这样运行:拍照 > 上传。因此,您需要将 dispatchCropImageIntent() 替换为 setCurrentBitmap()上传方法

【讨论】:

以上是关于Android 应用裁剪照片的主要内容,如果未能解决你的问题,请参考以下文章

Android 从相机裁剪照片

Edmodo android图像裁剪器,修复纵横比

Android 自定义View实现照片裁剪框与照片裁剪

Android 图片选择(ImageSelector) (拍照,裁剪,压缩,查看)

android从相册选取图片裁剪,裁剪的时候图片变为黑色的,怎么解决???

Android - 相机和画廊意图后的裁剪给出了奇怪的结果