将从相机拍摄的图像保存到INTERNAL存储中

时间:2015-07-28 13:45:41

标签: android image camera

我刚刚开始使用Android编程,我正在创建一个Android应用程序,在该应用程序中,用户可以键入信息,使用ImageView实现拍照并保存信息。我已经达到了能够显示ImageView图像的程度。但是,我无法将拍摄的图像保存到手机的内部存储空间中。这意味着,每当我尝试保存信息时,包括ImageView(来自摄像头的图像),只有图像消失。我在http://www.androidhive.info/2013/09/android-working-with-camera-api/上遵循了本指南,但由于我的手机没有SD卡存储空间,因此无效。

我已经在这里阅读了一堆问题,但他们没有解决问题。

所以如果有人能给我一个关于如何编辑这段代码的详细程序,我可以将图像保存/读取到我的INTERNAL存储中,这将是非常棒的!谢谢。

$checkUserActiveInMyPageRules = Array(
    'user' => 'required|exists:user,id,active_status,A'
);

这是我目前的代码:

/**
 * returning image / video
 */
private static File getOutputMediaFile(int type) {

    // External sdcard location
    File mediaStorageDir = new File(
            Environment
                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
            IMAGE_DIRECTORY_NAME);

    // Create the storage directory if it does not exist
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
                    + IMAGE_DIRECTORY_NAME + " directory");
            return null;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

getOutputMediaFile()正在返回目录,而不是文件。您需要指定要在其中写入图像的(尚未存在的)文件的路径。

此活动在this sample application

中说明了这一点
package com.commonsware.android.camcon;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import java.io.File;

public class CameraContentDemoActivity extends Activity {
  private static final int CONTENT_REQUEST=1337;
  private File output=null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File dir=
        Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

    output=new File(dir, "CameraContentDemo.jpeg");
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));

    startActivityForResult(i, CONTENT_REQUEST);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode,
                                  Intent data) {
    if (requestCode == CONTENT_REQUEST) {
      if (resultCode == RESULT_OK) {
        Intent i=new Intent(Intent.ACTION_VIEW);

        i.setDataAndType(Uri.fromFile(output), "image/jpeg");
        startActivity(i);
        finish();
      }
    }
  }
}