Getting the binary form of an image in android studio - java

I'm trying to get the binary form of an image in android to send to a server, but it's not working. When I printed the bytes being created it returns this : [B#cfc2978
public Byte[] getImageBytes(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPG, 50, baos);
byte[] imageBytes = baos.toByteArray();
System.out.println(imageBytes);
return imageBytes;
}
Can Anyone help me find out why this is happening and how to fix it? To clarify, i need to send the binary form of the image to the server to be processed. The testing was done through the emulator.

Related

How to pass an image from java to flutter?

I am trying to pass an image from java to flutter. The image is in bitmap in java so I first try to convert it to bytes[] using:
on java side:
int byteCount = transferredImage.getAllocationByteCount(); // transferredImage is the bitmap
ByteBuffer buffer = ByteBuffer.allocate(byteCount); //Create a new buffer
transferredImage.copyPixelsToBuffer(buffer);
byte[] myByte = buffer.array();
Then on flutter side I read the image as Uint8List and create an img.Image object from it:
img.Image styleImage = img.Image.fromBytes(
imgWidth,
imgHeight,
transferredBytes,
);
This works, without causing any errors but the image displayed using Image.memory(img.encodeJpg(styleImage)) always has a blue tint. The bitmap on java side is fine but when converted to bytes[] and displayed in flutter it has a blue tint..
So I assumed some important information may have been dropped during conversion to bytes using my above method, I then convert the image to an image format and then transfer the bytes:
at java side:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
transferredImage.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte bytes []= baos.toByteArray();
on flutter side:
img.Image styleImage = img.Image.fromBytes(
imgWidth,
imgHeight,
transferredBytes,
);
But this does not work and creates an error:
RangeError (index): Index out of range: index should be less than
321512: 322560
If possible, I would prefer to have my first attempt work as it is really fast, so is there any way I can get this to work ?
Thanks

Android - Error when uploading a bitmap to server C#

When i make upload of a image in Android to the server (C #) it generates an error converting the image to byte Array, this happens with some images which is very strange because this error is not always generated, that is, depending the image is correctly converted or not.
The conversion code:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmapPhoto.compress(Bitmap.CompressFormat.JPEG, 50, stream);
final byte[] img_byte = stream.toByteArray();
final String imageString = Base64.encodeToString(img_byte, Base64.DEFAULT);
When receiving in C# I make the following conversion in the string, generating a byte Array and then for the MemoryStream.
byte[] novaFoto = Convert.FromBase64String(NovaFoto.FotoString);
using (MemoryStream stream = new MemoryStream(novaFoto))
{
Image image = Image.FromStream(stream);
}
depending at the image the error appears in either Convert.FromBase64String or Image.FromStream.
Can anyone help me with this? If you have another method i like this.Thanks!!

Android base 64 encode string not showing actual image

Hello I am working with android image processing via base 64 encoding and decoding.I need to send an encoded base 64 string to server as a string . When I tried it in android side , I can able to decode it into original image.and my decoding and encoding are as follows
public void base(Bitmap bitmap)
{
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
toimag(encoded);
String a=encoded.replaceAll("\\s+","");
Log.i("strrr",a);
}
public void toimag(String encodedImage)
{
byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
logo.setImageBitmap(decodedByte);
}
But I cant able to get the actual image using http://www.askapache.com/online-tools/base64-image-converter/ . It show only a part of my actual image. This is my base 64 string
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
How can I resolve this issue ? Is there any problem with this encoded string ? Please help. Thanks in advance :)
It appears you are cutting and pasting from the logcat. logcat truncates long messages, so you should not rely on it for copying large pieces of data. You should save the base64 string out to a file and then try your validation using that file.
For Encode image to Base64
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncode = Base64.encodeToString(b,
Base64.DEFAULT);
For decode image
byte[] decodedByte = Base64.decode(imageEncode, 0);
Bitmap newBitmap = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
logo.setImageBitmap(newBitmap);

Convert Android Base64 Bitmap and Display on HTML Base64 Image

I develop a custom messenger application which sends message from client(Android) to another client(web). My problem is when I send image file, I encoded it to Base64 string and then send it to another client. When the recipient client is Android, the app successfully decoded the Base64 String to bitmap image. But when the recipient client is web app, the web application failed to decode and display it using :
<img id="img" src="data:image/jpeg;base64,3iVBORw0KGgoAAAANSU...">
My Java encode/decode method
public static Bitmap base64StringToBitmap(String base64) {
byte[] bytes = Base64.decode(base64, Base64.URL_SAFE);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
public static String bitmapToBase64String(Bitmap bmp, Bitmap.CompressFormat format, int quality) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(format, quality, baos);
byte[] bytes = baos.toByteArray();
return Base64.encodeToString(bytes, Base64.URL_SAFE);
}
I've tried to change the encoding method to Base64.DEFAULT, but still the Base64 String cannot be displayed in HTML using data:image/jpeg;base64. Is there any differences between Android Base64 string and Base64 string used to display image in HTML? Please suggest me the solution. Thanks
EDIT :
This is the base64 string example generated from my Android application, with padding. I failed to display it on html/web, although it can be displayed fine on Android :
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
I had a similar issue where I wanted to convert an Android generated BASE64 string to Binary with Javascript and atob function was keep giving me errors. My first guess was like yours to use URL_SAFE instead of DEFAULT, but none of them worked, then I figure it out that I need to use Base64.NO_WRAP method to get it working.
I tested Base64.NO_WRAP and displaying inline image and IT WORKED!!!!
Hope this save you some nerves, because I did had some till I figure it out how to do it.
So to give the nice answer, change: return Base64.encodeToString(bytes, Base64.URL_SAFE); to this: return Base64.encodeToString(bytes, Base64.NO_WRAP);
E
can you try with this for me it's working fine one two change only Base64.DEFAULT insted of URL_SAFE and image tag alt. just check it.
<img height=700px src='data:image/jpg;base64,"+encodeString+"' alt='Embeded Image'/>
public static String bitmapToBase64String(Bitmap bmp, Bitmap.CompressFormat format, int quality) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(format, quality, baos);
byte[] bytes = baos.toByteArray();
return Base64.encodeToString(bytes, Base64.DEFAULT);
}

Upload image to servlet from android client gives a corrupt file

I'm trying to upload an image to servlet from my android client. The code executes well, however when I try to open the sended image, it seems corrupted. ¿Do you know why?
The code is the next:
Android client:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, stream);//compress to which format you want.
byte [] byte_arr = stream.toByteArray();
String image_str = Base64.encodeToString(byte_arr, 0);
image_str is what I'm sending to servlet:
byte[] imageByteArray = Base64.decode(message);
FileOutputStream f = new FileOutputStream("/path/IMG/pruebaaaa.jpg");
f.write(imageByteArray);
f.close();
Thank you in advance!
Try putting in flush() just above close() as below.
f.write(imageByteArray);
f.flush();
f.close();

Categories