问题描述
if (requestCode == 0 && resultCode == RESULT_OK) {
filePath = data.getData();
Bitmap ImgBitmap = null;
ImgBitmap = resize(getApplicationContext(),filePath,300);
Byte_image = BitmapToByteArray(ImgBitmap);
try {
// Uri파일로 bitmap resize
//resize(getApplicationContext(),1000);
// 이미지 암호화
EncryptImg = aesCoderAndriod.encrypt(seed,Byte_image);
String EncryptString = new String(EncryptImg,"UTF-8");
Log.e("Encrypt",EncryptString);
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users")
.child(currentUser.getUid()).child("Object");
String key = databaseReference.push().getKey();
HashMap<Object,String> object = new HashMap<Object,String>();
object.put("title","image_title");
object.put("photo",EncryptString);
DatabaseReference keyRef = databaseReference.child(key);
keyRef.setValue(object);
filePath -> Bitmap -> byte[] -> String 并保存在 firebase realtimeDB 中。 然后,我将 firebaseDB 值称为“照片”。我在 En1 中得到“照片”值。 En1(String) -> En2([]byte) -> Dn1(decrypted) -> Dn2(Bitmap)-> Dn3(Uri)
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users")
.child(currentUser.getUid()).child("Object");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
ItemObject itemObject = snapshot.getValue(ItemObject.class);
String title = itemObject.getTitle();
String En1 = itemObject.getPhoto();
Log.e("En1",En1);
byte[] En2 = En1.getBytes(UTF_8);
Log.e("En2",En2.toString());
try {
byte[] Dn1 = aesCoderAndriod.decrypt(seed,En2);
Bitmap Dn2 = byteArrayToBitmap(Dn1);
Uri Dn3 = getimageUri(getApplicationContext(),Dn2);
Log.e("Dn3",String.valueOf(Dn3));
itemObject = new ItemObject(title,Dn3.toString());
mItem.add(itemObject);
} catch (Exception e) {
e.printstacktrace();
}
// itemObject.setPhoto(snapshot.child("Photo").getValue().toString());
}
// myAdapter= new MyAdapter(getApplicationContext(),mItem);
// mRecyclerView.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
但是,get []byte 有问题。
从 DB(En1) 得到的值和再转换为 byte[] 的值(En2) 是不同的。 有什么问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)