Aman Chatterjee
Aman Chatterjee

Reputation: 85

Base64.encodeToString() not working in Android

So i have a bitmap and now i want to convert it into an imageUri (or string), i am using this code here but its just doesn't work instead of returning the imageUri its returning a long random text.

Here is my code :

ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    saveBitmap.compress(Bitmap.CompressFormat.JPEG, 75, baos);
                    String path = Base64.encodeToString(baos.toByteArray(),Base64.DEFAULT);

And this is what i am getting :Log.d

Upvotes: 1

Views: 10916

Answers (5)

Sajib saha
Sajib saha

Reputation: 371

try {
                    val imageStream: InputStream? = requireActivity().getContentResolver().openInputStream(mProfileUri)
                    val selectedImage = BitmapFactory.decodeStream(imageStream)
                    val baos = ByteArrayOutputStream()
                    selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos)
                    val b = baos.toByteArray()
                    val encodedString: String = Base64.encodeToString(b,Base64.DEFAULT)

                    Log.d("check string" ,encodedString.toString())

                } catch (e: IOException) {
                    e.printStackTrace()
                }
                
For kotlin use this code and this is running successfully image to base64 when upload image to server . just put image uri "imageStream" here thats it.
                

Upvotes: 0

Tincho825
Tincho825

Reputation: 929

Instead of Base64.DEFAULT, use Base64.NO_WRAP

String path = Base64.encodeToString(baos.toByteArray(),Base64.NO_WRAP);

Upvotes: 6

Aman Chatterjee
Aman Chatterjee

Reputation: 85

Sorry guys, i thought Base64.encodeToString() will return me the imagePath, but i was wrong. Anyways i got the solution,

Here is the code that i have used,

ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    saveBitmap.compress(Bitmap.CompressFormat.JPEG, 75, baos);
                    String path = MediaStore.Images.Media.insertImage(getContentResolver(),saveBitmap,"Title",null);

Upvotes: -4

Mayur Dabhi
Mayur Dabhi

Reputation: 3926

try below way, should be work

byte[] data = convert image in byte.
String base64 = Base64.encodeToString(data, Base64.DEFAULT);


byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");

Upvotes: 5

user10587375
user10587375

Reputation:

Base64.encodeToString() encodes the byte array in a string. This isn't your uri. Rather this is your image/bitmap in Base64. You can use suitable Base64.decode to get back the byte array.

To get uri, you can use some of the other options including Uri.fromFile(new File("your_file_path));

Upvotes: 0

Related Questions