简体   繁体   English

从 Imageview 中的摄像头和显示器捕获图像

[英]Capture Image from Camera and Display in Imageview

I want to display the image I took inside an imageview but it doesn't display the image.我想显示我在 imageview 中拍摄的图像,但它不显示图像。 I checked these pages but got no results: Image captured from camera not displaying in imageview android我检查了这些页面但没有得到任何结果: 从相机捕获的图像未显示在 imageview android

Capture Image from Camera and Display in Activity 从相机捕获图像并在活动中显示

my activity:我的活动:

public class MainActivity extends AppCompatActivity {
    Button btncam;
    ImageView imgpic;
     final int take=10;
     long name;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imgpic=(ImageView)findViewById(R.id.imgpic);
        btncam=(Button)findViewById(R.id.btncamera);
        btncam.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                name=System.currentTimeMillis();
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(G.appadress+"/"+name+".jpg")));
                startActivityForResult(intent,take);
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
           switch (requestCode){
        case take:
            Bitmap bitmap= BitmapFactory.decodeFile(G.appadress+"/"+name+".jpg");
            imgpic.setImageBitmap(bitmap);

    }
    }
}

class G: class G:

public class G extends Application {
  public static   Context context;
    public static String appadress= Environment.getExternalStorageDirectory().getAbsolutePath();
    @Override
    public void onCreate() {
        super.onCreate();
        context=getApplicationContext();
        File file=new File(appadress);
        file.mkdirs();
    }
}

manifest:显现:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Try:尝试:

public class MainActivity extends AppCompatActivity {

Button btncam;
ImageView imgpic;
final int take = 10;
Bitmap bitmap;
long name;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imgpic = (ImageView) findViewById(R.id.imgpic);
    btncam = (Button) findViewById(R.id.btncamera);
    btncam.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, 0);
        }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data != null) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data.getExtras() != null) {

            bitmap = (Bitmap) data.getExtras().get("data");

            try {
                File imageFile = createImageFile();
                OutputStream stream = new FileOutputStream(imageFile);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                stream.flush();
                stream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            imgpic.setImageBitmap(bitmap);
        }
    }
}

public File createImageFile() throws IOException {
    // Create an imageView file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = getStorageDir();
    File image = File.createTempFile(
            imageFileName,  /* prefix */
            ".jpeg",         /* suffix */
            storageDir      /* directory */
    );

    // Save a file: path for use with ACTION_VIEW intents
    return image;
}

private File getStorageDir() {
    File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + "/PathPhoto"); //Environment.DIRECTORY_PICTURES -->> it is path for Pictures

    if (storageDir != null) {
        if (!storageDir.mkdirs()) {
            if (!storageDir.exists()) {
                Log.d("CameraSample", "failed to create directory");
                return null;
            }
        }
    }
    return storageDir;
}

} }

I prefer Android Image Cropper library, automatically handles Importing or Capturing images.我更喜欢Android Image Cropper库,自动处理导入或捕获图像。

private void onCaptureClick(){
    CropImage.activity()
        .setGuidelines(CropImageView.Guidelines.ON)
        .start(this);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            Uri resultUri = result.getUri();
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            Exception error = result.getError();
        }
    }
}

class G: class G:

public class G extends Application {
  public static   Context context;
    public static String appadress= Environment.getExternalStorageDirectory().getAbsolutePath()+"/reza";
    @Override
    public void onCreate() {
        super.onCreate();
        context=getApplicationContext();
        File file=new File(appadress);
        file.mkdirs();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM