gpt4 book ai didi

java - 将带有文本的图像(已连接)上传到 Firebase 存储

转载 作者:太空狗 更新时间:2023-10-29 14:46:00 25 4
gpt4 key购买 nike

我使用 Android 将图像上传到 Firebase Storage。我有一个应用程序可以在拍摄照片后立即发送图像。

但我想创建一个在发送前在 ImageView 中显示照片的应用程序。我想在照片下面写一些文字,然后上传它们。

我应该使用哪些工具来执行此操作?我要从 Storage 下载 Picasso。但我无法管理如何在拍摄照片后显示 ImageView,接下来写一些文本(如名称或描述)并将其发送到 Firebase。第二个挑战是如何用这张图片显示特定的文字?

图像 <-> 文本。

在 Firebase Storage 中,我没有看到一些用于存储带有文本的图像的字段。

enter image description here

MainActivity.java:

 private ProgressDialog mProgress;
private Bitmap bitmap;
private Button mUploadBtn;
private Button mSendBtn;
private EditText mEditText;
private ImageView mImageView;
Uri picUri;

private StorageReference mStorage;



private static final int CAMERA_REQUEST_CODE = 1;

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


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

mEditText = (EditText) findViewById(R.id.editText);

mSendBtn = (Button) findViewById(R.id.sendBtn);
mUploadBtn = (Button) findViewById(R.id.uploadBtn);
mImageView = (ImageView) findViewById(R.id.imageView);

mProgress = new ProgressDialog(this);

mUploadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

File file=getOutputMediaFile(1);
picUri = Uri.fromFile(file); // create
i.putExtra(MediaStore.EXTRA_OUTPUT,picUri); // set the image file

startActivityForResult(i, CAMERA_REQUEST_CODE);
}
});
}

public void UploadWithText(){

String name = mEditText.getText().toString().trim();

}


/** Create a File for saving an image */
private File getOutputMediaFile(int type){
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyApplication");

/**Create the storage directory if it does not exist*/
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
return null;
}
}

/**Create a media file name*/
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == 1){
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".png");
} else {
return null;
}

return mediaFile;
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);


if(requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK ) {

mProgress.setMessage("Uploading Image...");
mProgress.show();


Uri uri = picUri;


StorageReference filepath = mStorage.child("Photos").child(uri.getLastPathSegment());


filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

mProgress.dismiss();

Uri downloadUri = taskSnapshot.getDownloadUrl();

Picasso.with(MainActivity.this).load(downloadUri).fit().centerCrop().into(mImageView);

Toast.makeText(MainActivity.this, "Uploaded Successfully.", Toast.LENGTH_LONG).show();
}
});
}
}

也许有一种方法可以将图像发送到 Firebase 存储,但文本(描述)正在发送到带有名称字段(来自 Firebase 存储)的数据库,这样我就可以识别出哪个文本属于特定图像?

有人可以帮我解决这个挑战吗?

问候

最佳答案

我只能笼统地回答,因为有太多的代码无法在不为您做的情况下具体回答。一般来说,有几种方法可以做到这一点:

  • 将文本添加到图像文件本身,上传经过更改的新图像
  • 将文本存储为图像属性,上传文件并将属性保存在别处
    • 您可以将数据存储在实时数据库中,或者
    • 您可以将数据存储在存储文件元数据中(假设成对)

关于java - 将带有文本的图像(已连接)上传到 Firebase 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com