3
我使用Android將圖像上傳到Firebase存儲。我有一個應用程序在拍攝照片後立即發送圖像。上傳帶有文字(連接)到Firebase存儲的圖像
但我想創建一個應用程序,它在發送之前在ImageView中顯示一張照片。我想在照片下面寫下一些文字,然後上傳兩個文字。
我應該使用哪些工具來做到這一點? 我已經從畢加索下載存儲。但是我無法管理如何在捕獲照片後顯示ImageView,然後編寫一些文本(如名稱或描述)並將其發送到Firebase。 第二個挑戰是如何使用此圖像顯示特定文本?
IMAGE < - > TEXT。
在Firebase存儲中我沒有看到某個字段用於存儲帶有文本的圖像。
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文檔中,我找不到您的想法的正確解釋。你認爲我可以下載圖片網址,並將其傳遞給數據庫?這是如何識別哪些文本屬於正確的網址? – gryzek
不幸的是,我們的文檔無法捕獲用例特定的解釋 - 我們有太多的可能性來詳細捕獲它們。如果你的目標是第一個,我建議找一個圖片修改,這個SO帖子似乎有一些很好的信息:http://stackoverflow.com/questions/5459701/how-can-i-watermark-的圖像 - 中的Java。如果你想瞄準第二個,這可能更容易,你需要存儲文本的位置以及文本的其他屬性(顏色,大小等),以便將它放在圖像上。 –