使用位图创建照片

huangapple 未分类评论41阅读模式
英文:

Create photo with Bitmap

问题

我正在开发一个应用程序,可以从相册和相机将图像上传到 Firebase 数据库。

从相册上传可以正常工作,但从相机上传时需要在拍摄图像时创建该图像。我找到的所有教程都有错误,我不知道如何做。

以下是拍摄照片的方法:

//-------------使用相机拍照的方法-------------
btnCamera.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        /*Intent btnImage = new Intent(SelectMethod.this, TakePhoto.class);
        startActivity(btnImage);*/
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(intent, CAMERA_REQUEST_CODE);
        }
    }
});

以下是从相册选择图像的方法:

//-------------从相册选择图像的方法-------------
btnGallery.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(Intent.ACTION_PICK);                                    //从相册选择图像
        intent.setType("image/*");                                                          //允许所有图像扩展名
        startActivityForResult(intent, GALLERY_INTENT);
    }
});
}

两种方法的 onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case GALLERY_INTENT:
            if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK) {
                Uri uri = data.getData();
                StorageReference filePath = storage.child(getIntent().getStringExtra("dato")).child(fecha + " " + uri.getLastPathSegment());
                filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(SelectMethod.this, "The image was uploaded successfully.", Toast.LENGTH_SHORT).show();
                    }
                });
            }
            break;
        case CAMERA_REQUEST_CODE:
            if(requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
                Bundle extras = data.getExtras();
                Bitmap bitmap = (Bitmap) extras.get("data");
                imgView.setImageBitmap(bitmap);
            }
            break;
    }
}
}
英文:

I'm working on an app that uploads an image to the firebase database from the gallery and camera.

From the gallery it works, but from the camera need create that image when I take it. All tutorial I found have mistakes and I don't know how do it.

private Button btnCamera, btnGallery, btnList;
    private StorageReference storage;                                                               //referencia para usar Storage
    private static final int GALLERY_INTENT = 1;
    private static final int CAMERA_REQUEST_CODE = 2;
    private static final String AUTHORITY=BuildConfig.APPLICATION_ID+&quot;.provider&quot;;
    private ProgressDialog progressDialog;
    private File file = null;
    ImageView imgView = null;

    Calendar c = Calendar.getInstance();
    SimpleDateFormat df = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);
    String fecha = df.format(c.getTime());

    private EditText TextNombre;
    private EditText TextApellidos;
    private TextView TextSalida;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_method);

        storage = FirebaseStorage.getInstance().getReference();

        TextNombre = (EditText) findViewById(R.id.textN);
        TextApellidos = (EditText) findViewById(R.id.textA);
        TextSalida = (TextView) findViewById(R.id.salida);


        progressDialog = new ProgressDialog(this);

        btnCamera = (Button) findViewById(R.id.buttonCamera);
        btnGallery = (Button) findViewById(R.id.buttonGallery);
        btnList = (Button) findViewById(R.id.buttonList);


        String dato = getIntent().getStringExtra(&quot;dato&quot;);
        TextSalida.setText(dato);


This is the method to take a picture with the camera:

        //-------------METODO TOMAR FOTO CON LA CAMARA-------------
        btnCamera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*Intent btnImage = new Intent(SelectMethod.this, TakePhoto.class);
                startActivity(btnImage);*/
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (intent.resolveActivity(getPackageManager()) != null) {
                    startActivityForResult(intent, CAMERA_REQUEST_CODE);
                }
            }
        });

And this with gallery:

        //-------------METODO SELECCIONAR IMAGEN DESDE GALERIA-------------
        btnGallery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent (Intent.ACTION_PICK);                                    //selecciona una imagen de la galer&#237;a
                intent.setType(&quot;image/*&quot;);                                                          //permitimos todas las extensiones de imagenes
                startActivityForResult(intent,GALLERY_INTENT);
            }
        });

    }

OnActivityResult for two methods:


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case GALLERY_INTENT:
                if (requestCode == GALLERY_INTENT &amp;&amp; resultCode == RESULT_OK) {                               //verificamos que la imagen se obtuvo de manera correcta
                    Uri uri = data.getData();
                    StorageReference filePath = storage.child(getIntent().getStringExtra(&quot;dato&quot;)).child(fecha + &quot; &quot; + uri.getLastPathSegment());
                    filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener&lt;UploadTask.TaskSnapshot&gt;() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Toast.makeText(SelectMethod.this, &quot;La imagen se subi&#243; correctamente.&quot;, Toast.LENGTH_SHORT).show();
                        }
                    });
                }
                break;
            case CAMERA_REQUEST_CODE:
                if(requestCode == CAMERA_REQUEST_CODE &amp;&amp; resultCode == RESULT_OK) {

                    Bundle extras = data.getExtras();
                    Bitmap bitmap = (Bitmap) extras.get(&quot;data&quot;);
                    imgView.setImageBitmap(bitmap);

                }
                break;
        }
    }
}

huangapple
  • 本文由 发表于 2020年7月25日 03:04:40
  • 转载请务必保留本文链接:https://java.coder-hub.com/63080000.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定