如何解决如何将图像字节 [] 转换为字符串,然后在 Andorid 中再次转换为 []byte
我从图库中获得了一张图片。名称:文件路径
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 举报,一经查实,本站将立刻删除。