자바 문서에서 발견 된 몇 가지 다른 방법과 다른 솔루션의 여러 가지 해결책을 시도했으며 을 byte[]
으로 변환하고 다시.비트 맵을 문자열로 변환 한 다음 문자열로 변환합니다.
문제는이 바이트 [String
]으로 변환 한 다음 byte[]
으로 다시 입력하고 다시 Bitmap
으로 다시 변환해야한다는 것입니다. 내가 필요로하는 것을 요약하자면 :
Bitmap -> byte[] -> String -> byte[] -> Bitmap
을 나는 이것이 이상한 소리로 들리 겠지만하지만 를 달성하기 위해 노력하고있어 것은이 방법을 수행해야합니다. 아래는 내가 시도한 것입니다. 누군가 내가 잘못하고있는 것을 지적 할 수 있다면 크게 감사하겠습니다!
Bitmap bitmap = mv.getDrawingCache();
// Convert bitmap to byte[]
ByteArrayOutputStream output = new ByteArrayOutputStream(bitmap.getByteCount());
bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
byte[] imageBytes = output.toByteArray();
// Convert byte[] to string
// I have also tried using Base64.encodeToString(imageBytes, 0);
String encodedString = new String(imageBytes);
// Convert string to byte[]
byte[] newImageBytes = encodedString.getBytes();
if (imageBytes == newImageBytes) {
Toast.makeText(SignatureActivity.this, "SUCCESS!!", Toast.LENGTH_SHORT).show();
} else { // Sadly, we always get to this point :(
Toast.makeText(SignatureActivity.this, "BOOO", Toast.LENGTH_SHORT).show();
}
// Convert byte[] back to bitmap
bitmap = BitmapFactory.decodeByteArray(newImageBytes, 0, newImageBytes.length);
다시 Bitmap -> byte[] -> Bitmap
가는 성공했지만, 0킬로바이트의 이미지를 작성하는 최종 Bitmap
를 일으키는 다시 String
로의 전환에 추가합니다.
비트 맵을 나타내는 한 문자열에 포함 된 내용이 중요합니까? – Jave
결국 원래의 비트 맵을 검색 할 수 있다면 문제가되지 않습니다. –
아마도 Android의 기본 문자 인코딩은 항상 UTF-8이지만, 일반적으로 기본 문자 인코딩을 사용하지 않아야합니다. 내가 String Ctor와 getBytes에 대한 호출 모두에서 명시 적으로 UTF-8을 사용할 것입니다. –