当前位置: 首页 > 知识库问答 >
问题:

Android-从图库中剪切图像不能正常工作

佟高澹
2023-03-14
    final int PIC_CROP = 2;
    final int CAMERA_CAPTURE = 1;
    final int PICK_FROM_FILE = 3;
    private Uri picUri;

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == CAMERA_CAPTURE && resultCode == RESULT_OK) {

            picUri = data.getData();// get image URI
            performCrop();
        } else if (requestCode == PIC_CROP) {// crop and compress image
            if (resultCode != RESULT_OK)
                return;
            Bundle extras = data.getExtras();
            Bitmap thePic = extras.getParcelable("data");
            FileOutputStream out = null;
            ByteArrayOutputStream bao = new ByteArrayOutputStream();
            double width = thePic.getWidth();
            double height = thePic.getHeight();
            double ratio = 650 / width;
            int newheight = (int) (ratio * height);
            thePic = Bitmap.createScaledBitmap(thePic, 650, newheight, true);
            try {
                out = new FileOutputStream(file);
                thePic.compress(Bitmap.CompressFormat.JPEG, 295, out);
                thePic.compress(Bitmap.CompressFormat.JPEG, 295, bao);

                byte[] ba = bao.toByteArray();
                switch (whichimg) {
                case 1:
                    simg1 = Base64.encodeBytes(ba);
                    break;
            } catch (Exception e) {

            }

        }
    }

if (item == 0) {// take photo
                    Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(captureIntent, CAMERA_CAPTURE);
                    alert.dismiss();
                } else if (item == 1) {// photo from gallery
                    Intent intent = new Intent();
                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(
                            Intent.createChooser(intent, (getString(R.string.choosephototo))),
                            CAMERA_CAPTURE);
                    alert.dismiss();
                }
private void performCrop() {
    try {
        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        cropIntent.setDataAndType(picUri, "image/*");
        cropIntent.putExtra("crop", "true");
        //cropIntent.putExtra("aspectX", 1);
        //cropIntent.putExtra("aspectY", 1);
        //cropIntent.putExtra("outputX", 356);
        //cropIntent.putExtra("outputY", 256);
        cropIntent.putExtra("return-data", true);
        startActivityForResult(cropIntent, PIC_CROP);
    } catch (ActivityNotFoundException anfe) {
        MyToast.makeText(NewAdd2.this, DariGlyphUtils.reshapeText(getString(R.string.devicecouldcop)));
    }
}

共有1个答案

易博文
2023-03-14

尝试下面的链接为您的问题,它将工作

performCrop()方法可能出现问题

作物链接

 类似资料:
  • 我有下面的代码 但是奇怪的是,当我在浏览器上打开控制台,然后尝试它完美地生成图像,然后我甚至关闭了控制台,图像正在正确地生成

  • 我正在尝试创建一个简单的照片库,其中一张照片是大的,也有拇指在底部,当点击成为那张大照片。画廊在单独的模式窗口。我的代码只在第一个模态窗口中工作。事实上,这是我第一次使用jQuery。我甚至找不到如何使用console.log来检查问题出在哪里。 HTML: jQuery:

  • 我正在做解析。com Android应用程序中,我将预定义/默认图像放入ParseFile并发送到服务器。现在我想把一张图片放在图库中的用户选择上。 我的代码如下:

  • 在我的应用程序中有一个活动,从相机中拍摄一张照片,保存它并显示在ImageView Follingby上。我使用FilePath类来指出将其存储在路径上的位置,CameraUtils类来获取file:uri并将图像转换为位图。现在我的任务是添加一个crop功能,以摆脱我们感兴趣的区域。裁剪功能应该在屏幕上激活,刚拍摄了一张照片,然后裁剪的照片需要保存才能显示。在此之前,请参阅添加crop前的工作代

  • 我正在尝试从图库中浏览一个图像。但我得到以下运行时异常 代码是