如何从相机拍摄照片并在下一个活动中全屏显示以进行编辑?

时间:2013-06-19 05:28:29

标签: android eclipse graphics bitmap image

在我的应用中,我想让用户拍照或从图库中选择要编辑的图片。

我的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传递给我的下一个Activity,让用户可以选择贴在选定图片上的贴纸。从那里,URI再次传递给EditingActivity

这就是我onCreate()的{​​{1}}方法:

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); 显示了图片,但是我希望用户能够触摸到图片上贴纸的位置,并保存已编辑的图片原始图片。现在我无法将ImageView中的原始图片全屏显示为位图。

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

我的问题简而言之:

如何从URI获取位图?如果我实际上从上面的代码中获取了一个Bitmap,为什么不绘制(我是否必须覆盖EditingActivity方法才能使用画布)?此外,当我到达可以在原始图片上贴标签的位置时,如何将新图像(带贴纸)保存到设备中?

1 个答案:

答案 0 :(得分:0)

尝试以下代码

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

修改

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

Uri path = data.getExtras().get("data");