0

在我的应用程序中,我想让用户拍照或从他们的图书馆中选择要编辑的图片。

我的MainActivity

public void openCamera(View view)
{
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);  
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);  
}

public void openLibrary(View view)
{
    Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
    photoPickerIntent.setType("image/*");
    startActivityForResult(photoPickerIntent, LIBRARY_PIC_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    Uri path = data.getData();

    Intent intent = new Intent(this, StickerActivity.class);
    intent.putExtra(EXTRA_MESSAGE, path);       
    startActivity(intent);
}

我将 URI 传递给我的 next Activity,它允许用户选择一个贴纸以贴在所选图片上。从那里,URI 再次传递给EditingActivity.

这就是我的onCreate()方法EditingActivity

Bundle retrievedExtras = getIntent().getExtras();
    int stickerType = retrievedExtras.getInt(StickerActivity.SELECTED_MESSAGE);
    Uri picturePath = retrievedExtras.getParcelable(MainActivity.EXTRA_MESSAGE);

    paint = new Paint();
    boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
    int frameBufferWidth = isPortrait ? 800 : 1280;
    int frameBufferHeight = isPortrait ? 1280 : 800;
    Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
            frameBufferHeight, Config.RGB_565);

    try
    {
        chosenPicture = Media.getBitmap(this.getContentResolver(), picturePath);
    } catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    } catch (IOException e) 
    {
        e.printStackTrace();
    }

    canvas = new Canvas(frameBuffer);
    canvas.drawBitmap(chosenPicture, 0, 0, paint);

现在,到目前为止,我只得到了使用 an 显示的图片ImageView,但是我希望用户能够触摸他们想要在图片上贴标签的位置,并将编辑后的图片保存在原始图片上。EditingActivity现在我无法让原始图片在我的位图中全屏显示。

我对 Android 还很陌生,我在这里检查了许多类似的问题,这些问题似乎几乎是我的解决方案,但不完全是。

简而言之,我的问题:

如何从 URI 中获取位图?如果我实际上是从上面的代码中获取位图,为什么它不绘制(我是否必须重写该onDraw()方法才能使用画布)?另外,当我可以在原始图片上放置贴纸时,如何将新图像(带有贴纸)保存到设备中?

4

1 回答 1

0

试试下面的代码

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);

编辑

要获取URI,请使用以下代码。

Uri path = data.getExtras().get("data"); 
于 2013-06-19T05:40:36.130 回答