I am trying convert an 64-bit encoded string of an image(BLOB) into a Bitmap so that I may display it on an image view. The code for 64-bit decoding works fine and returns the byte-stream , but converting the returned byte-stream to a Bitmap returns null .
Please help.
//This statement works
byte[] decodedString = Base64.decode(c.getString(TAG_PICTURE).toString().getBytes(),
Base64.DEFAULT);
//This statement returns null
Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
The complete code is as below :-
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
products = jsonObj.getJSONArray(TAG_PRODUCTS);
// looping through All Contacts
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
Double prod_price = Double.valueOf(c.getString(TAG_PRICE));
//The code below works as it returns the byte-array
byte[] decodedString = Base64.decode(c.getString(TAG_PICTURE), Base64.DEFAULT);
//The code below returns null even though the byte-stream is known
//from above
Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0,
decodedString.length);
myProductsList.add(new PRODUCT(c.getString(TAG_PRODUCT_NAME),c.getString(TAG_STORE_NAME), c.getString(TAG_OWNER_NAME), c.getString(TAG_DESCRIPTION), prod_price,bitmap));
}
} catch (JSONException e) {
e.printStackTrace();
}
I would appreciate a solution on this as I have spent a long time searching and am now stuck on this.
Thanks in advance.
Change this code :
byte[] decodedString = Base64.decode(c.getString(TAG_PICTURE).toString().getBytes(), Base64.DEFAULT);
To :
byte[] decodedString = Base64.decode(c.getString(TAG_PICTURE), Base64.DEFAULT);
There is no need to call toString because you already use getString, and dont call getBytes, just pass the encoded String to decode 1st param.
Thanks to everyone who made suggestions. I found out the fundamental issue was not in the Java programming side but on the database. I had been storing images as blob data-type which tend to small for the images. Changing the datatype to mediumblob solved the issue.
Related
I have used this function for encoding the image.
private String encodeImage(Bitmap bm)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG,100,baos);
byte[] b = baos.toByteArray();
String encImage = Base64.encodeToString(b, Base64.DEFAULT);
Log.d(TAG, "encodeImage: " + encImage);
return encImage;
}
This is how I created the bitmap image
setContentView(R.layout.camera);
cameraView = (CameraView) findViewById(cameras);
cameraView.setJpegQuality(2);
cameraView.setCameraListener(new CameraListener() {
#Override
public void onPictureTaken(byte[] jpeg) {
super.onPictureTaken(jpeg);
Bitmap bitmap = BitmapFactory.decodeByteArray(jpeg, 0, jpeg.length);
encodeImage(bitmap);
}
});
While decoding the byte64 string generated by this using online tools i am getting a completely black image.
this is my byte64 string
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCBIACiADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8GJbi
TYY/tPp+455wX/l1685HJIJNCWOO4jaSKTzR/wDXOD19icfTnK0NcRyXVtJF5pimx58GOOr+/bA6
8de61KPNijI8vrxz3+Yjpk8c9D74yDX5OfUCqsMgjkjgi83z+J57c+rn2yDz7A8c5zUUatHMfKSK
L18gNnq/t34x6c8knJe0eIDJG3lf9PHpy3oT6fnnnrVVfLzex+R/y3E59+ZB/eyP5++ax9hDvL71
/wDImVofzP7v+AXoPtEUZkj9v9eB1y3PU9sfTJweWqgJPPeaOT/VeQP0LDpz2Pr+IJzV+PzI4z5v
t/N8nqfY45xnAPJNVY444g0VzHzgf9fnVv8AAfz4P3uUgfZW8clsbiOPzfOg/f8AH+03t7D268gk
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
5A/4E+e59vfr68lWUot6K15W9FKXn5/l2dzneu
Your encode code is OK, just checked it. There is a big possibility you made mistake trying to copy your encoded string from logcat. Just place breakpoint on Log.d(), copy encoded string value and check it out again via online tools. I used this to test the result.
I don't code in Android but I think you're mixing your data up. For example the manual says decodeByteArray will "Decode an immutable bitmap from the specified byte array." so this line :
Bitmap bitmap = BitmapFactory.decodeByteArray(jpeg, 0, jpeg.length);
Would only work if jpeg array contains raw RGB colour values not actual JPEG values (since JPEG is compression math not a colour array).
Try this and see if String encImage can be displayed by some online tool. No usage of that other function private String encodeImage(Bitmap bm) since I suspect it's part of the problem...
setContentView(R.layout.camera);
cameraView = (CameraView) findViewById(cameras);
cameraView.setPictureFormat(ImageFormat.JPEG);
cameraView.setJpegQuality(2);
cameraView.setCameraListener(new CameraListener() {
#Override
public void onPictureTaken(byte[] jpeg)
{
super.onPictureTaken(jpeg);
String encImage = Base64.encodeToString(jpeg, Base64.DEFAULT); //print and test this string in some B64-to-JPEG decoder/viewer
//Bitmap bitmap = BitmapFactory.decodeByteArray(jpeg, 0, jpeg.length);
//encodeImage(bitmap);
}
});
I have a string which is decoded by windows-1256 like this
A0C8E5CFC7CF2DC7DDDEE5ED
I want to encode that to UTF-8 in android.
I tried to encode like this
String input = "A0C8E5CFC7CF2DC7DDDEE5ED";
try {
String message = new String(input.getBytes(), "windows-1256");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
but I didn't see what expected expression.
I wrote some codes in C# for this purpose ,like this
int index = 0;
while (response[index] != 0x00)
result = result + Encoding.GetEncoding("windows-1256").GetString(response, index++, 1);
it works fine.
does anyone have any idea how to solve it?
Thanks in advance
First you convert your hex string into byte array. See this post.
Then, convert the byte array byte[] into UTF-8 using
String str = new String(byte[], "windows-1256");
UTF-8 is the native android encoding. Hope it helps.
I am trying to decode base64 encoded string into bitmap in android.
The encoded string will start with "image/jpeg;base64,"
I use the following method:
public static Bitmap decodeBase64(String input)
{
byte[] decodedByte = Base64.decode(input, Base64.DEFAULT);
// also tried using Base64.URL_SAFE , Base64.NO_PADDING
return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
}
Assume that I am calling the above method as
ImageView get_img=(ImageView)fundViewByID(R.id.getImg);
get_img.setImageBitmap(ImageCache.decodeBase64(url))
When I run the code it either throws
--- SkImageDecoder::Factory returned null
or
bad base-64 with IllegalArgumentException
The below is base64 string
data:image/jpeg;base64,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
The string "data:image/jpeg;base64," is not a valid base64 Encoded string. So it must be removed before decoding.
here you go.
String encodedDataString = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQSEhUUEhQUFRQVFBQUFBQXFxQWGBQWFxUWFhQXFRUYHSggGBwlHBQUITEhJSkrLi4uFx8zODMsNygtLisBCgoKDg0OGxAQGywmHyQsLCwsLC4sLywsLCwsLCwsLCwsLCwvLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLP/AABEIAJcBTgMBIgACEQEDEQH/xAAbAAACAwEBAQAAAAAAAAAAAAACAwABBAUGB//EAEUQAAEDAgIGBwQHBwMDBQAAAAEAAhEDIRIxBEFRcYGRBSJhobHB0RMykvAGFBVCUuHxU1RicoKT0jOiskNE4hYjNGNz/8QAGwEAAwEBAQEBAAAAAAAAAAAAAAECAwQFBgf/xAAwEQACAgECBAIKAwEBAQAAAAAAAQIRAxIhBDFBURNhBRQiQoGRobHh8FJx0TLxFf/aAAwDAQACEQMRAD8A5+FSEzArwL64+A3FwpCZgVhiA3FwpCbgUwJC3FwpCaGK8CLDcVCmFO9mrDEWFMThUhPwK/ZosNLM8K8Kf7NTAixaWIwqQnezU9mixUxMKQm4FMKLEKhSE3AqLEBYuFITMKmFAWLhVCZhUhAWLhSEyFITDULhSEcKYUBYuFITIUhA7FQpCZCkICxcKoTYVQgdi4VQmwqhFhYuFUJkKQmOxUKQmQqhA7FwpCZCqEDs2imrwJ4YrwLDUb6DPgRexT8CvCjUGkz+zUFNaMCvAjULSZ8CsU0/2aL2aNQtJnwKYFowK8CVhRnwKYFpwKYEWKjNgV4FowKYEWFGbApgWksVYE9RLRmwKYFowKYE7JaM2BTAtGFTAiyaM2BTAtBaqwJ2KjNgQli1FiEtTslozlirCtGBUWJ2TRnwqQnFiosRYhMK8KZhVYUxWLhSEyFUICxeFVhTYVQgdi4VQmQpCB2KhSEyFUIHYvCpCZCqEx2LhSEakICzrYFYYnhivAuTUeroEBivAnhiZTAGYSchrHboy4FeBavZhCKaNQpYmhGBXgT8CsMRqJ0Gf2avAtGBXgRqDwzP7NTAtGBTAjUGgz4FWBacCrAjUT4ZnwKYFowKixPUS4GfAqLFowqFidkuBmLFWBacCrCiyXAzlirAtGBUWp2ToMxYhLFpLUJanZLgZ8KosWgtQlqqyHERhVFqeWocCdk6RGFVhT8CotTsnSILUJanlqohOydIjCqLE+EJaixaRJaqhOIQkJ2FCoVQmkICEBTAhSEUKoTACFCiVIGd8BFC7jaDPwN5JjWN1NaOAXz79JR6RZ9svRUuskcABG1h2Fd9pRY1D9Jdo/X8Fr0Susvp+Tgig78LuRRjRHn7ruRXcxKYlD9JS6RKXoqHWTOP9Qf+HvHqiHR79neF1sSvEpfpHJ2X78S16Lw939P8OWOjX/w8/wAlf2a7a3v9F0wVaj/6GXyLXozB5/M5zOjdp5eq0N0Rn4fFagFMKxnxeWfOXy2NsfBYIcor47/cynRGH7vefVKqdGg5EjfB7wt2FTAiPFZY8pP7/cc+DwT5wXw2+xx6mgvGqd1+7NZ3MIzEb13nMKXUg2cJ3rsx+kpe8vkcGX0RB/8ADr+zhwhIXSq9Hzdh/pPkVifRcM2kcCvSxcRDIrizyM3B5MTqS/wTCqERVLazlcAYVQiUTsnQLIVEIyhJTslwAIQlMKAlVZm4AFDCMoSnZDiAUJRkoSU7J0oFUVZKolOydJUKiFZcqxJi0gkISERKElMWkEhUQrJVEpi0lEICFZchLkxOKKKEqFyEuVENHt/tOl+0bzRt6To5e1ZzAXlfsvRv3al8BUd0Voxz0alyPHWvifZ8z9LuXkerPSVEf9Wn8bfVWelaH7al/cZ6ryrejtGH/b0tvuj17Ef1LR/3el8LT4lHs+Y7l5Hp/tWh+2o7/aM9VX2zo/7xRv8A/Yz1XmXaDo5/7aiT/I35CL6nQ/Y0+A/NHs+YW/I9OOlaH7ej/cZ6qvtfR/29H+4z1XmjoVCP9Cl8DUf1Wh+wo/22+iW3mFvyPSDpah+2pfG31Rt6TonKrT+NvqvKnQ9Gn/42j21+ypf4ohQofu+j/wBmj/iil5hqfkep+06P7an8bPVczprpprQPZVGnC19QltRky0EAYYOMAukiQZDQuSaND930f+zS/wAUDmMAOCjRaTAPUYMQmYMN2hp/pTSXZhr/AKOp9B+nqdbQ6Ti6m2xEYos1zmgw4z9069m0L0P1ymfvs+JvqvGaLo9Km1rG0qYDRA/9thjsktJ4p8t/Zs+Bv+KnT5Dc9+hu6K+k7aukvouLmRVe1nVacQpscXAAXuWYsRtDotYnv+2B1tPELxtCmGuqOLWu9pEjC2xDQ2xOQIaBhy5rQHDLAI7GNHgFco9kOU43s+323+p1ulOlmUS6YAFPFiHWGIuDWAtBmM5juWjR+lWOcxocDjbII3Yh2gRK8+WDU2NXutjiNf5qm9HAYAKYhplvVEk4S2ZB7Sd4CXhyfRi8WCPTdI16dNjn1CMLWue4uAMNaJcZPYsVE0KrntAjBhlwJaDInqzYxrjJc86Lb/SHwhU3RbnqNBMTIGoQO5bQjmj/AM2c+SXDyXt0zT0hSo0gCahAc9lMThd1nuDWixGsrNVa0YsNWm4MDy8zAbgLg/ETYEYXa9RQV9BDgA9rCMTT7ozBDmnmAeCJnR15Apg3vhGsydWsyuuGXiorfc4pYOCl5f0xlHo+o8EtAMEtzzjZ2JGk6O+mQHjDOWKwO2CJm0n0TqeiFgMEQSTGydkiw7N6GtoXtAMeEhr2OAM+80lzXW2Fq3Wfiqb0r9+JzvheCc1HU/34GJtQENcHsLXjqwZnPI5EWUpEujDDpEjCZBtisddkejdFspvc8M95rRAg3DqrteX+q/4jqVudSYA0te2AALbBYdoMQdolbY8ud84rr+/Ax4jhuFVaZNcvlv8AfbyXxEtBc9tNol75wsloJjOMRGUi2aVjtOqJnVG2UmpQDjTNI1WmnLWup4g6DGLrYT1oGratlKlTM4mETImWCZAkkPew5NF75DYtvEzLnFGHqvDOqk+pnL0Jcm161NonqkDbEnbYVidmpKeDhDg+heDhBMiduK3eV1RdnmzxaXzBLkONKdXdP3OAkc5IKH279rRefdZPMha6WczlFdRpeqNRKo6Q9plpbOXuMjlhhMZp1Vsw+JziBPABGmQKUOrfy/JRqITUVV9MqPjE8ujIEzG6yztc5psQNVs79qpRfUTa6MeXoHVO1VT0hzRAFP8At0Xd7mko2dL1mWa4AXOECkAJ7A1JqXRL9+A4xg+bfy/Io1RtHMITVG0cwppGn1qlnOceyLdwWgdP6SGCmKtTC2wAwtN+2Ae9Htdl8/wUsUL5v5fky+1b+JvMI6fW93rRsv4LPU0t7iSRfWQBPHDmhOlmAMTg3OIdE7YTd0JY1e9noBQfscrbQdsPf6LtBXgC8X1PEfTevZTks0Jx1gcT6LRS6LJzqNHFx8l0MIRNCHwmLsNcbksxfZIH/VHCSe8hG3opmurww/8AkVrIUwIXC4xPjMhnHRLNbx8J80xvRNLW8ncP/Eo8A7VDS+fkp+rYxet5O33Db0do4zc/dbzaoND0b+Pm26WSNo5/qlVqloseZ74Cn1bGWuKzPoaxQ0cWg9/5QpVZo+oAby7ZvXGOjt3cSFBozdp+I+qv1XF3ZPrWZdEdbozR6QpgVcD363AloP8ASDAWxpotMikzn/kvNmgBeX8yR4oDQcTADyf5ZNtyfqmO+f1f+ifF5ey+SPQUS1r3PDZJOKCQQLRYak77SjINHCPBecq9H1mjEWuAORgR2A3smu6PqAAvIAOUAkzE5WtbOYVeBi7oh8RxEn1OxW0/FMltxHfO1UdNbrI/3eq4o0Zt5rNtn1TnlFxnM5EhG7o9vVOMunU1gd4a98KlDGuv3Jc8z5r7HUdpTNo5lAdKZtK5o0Sk0kvL4B+7hFtsG45JmiaHoz5cXVR2OfTAz1k/lkquK7mTxyfRGp2mM2kf0n0SXaWzU8/CfRAadEO9ymW//q6TxNQeajdKbTBw0KThNy4teYOqDUkxtACakuif0JeF9Wvr/gmrpOx/eQkjTHzAfc5AXJXVqdIMqEEupUrC7KJLhsAjXlshbdG+kFKizqPe917CmxpOoXchzlW0f35AseNPea/ficBjtJJgNqEzEezOYzGWpdMaETDXUKxcRJLqYBGy+Jg75Wk/TOoR/puPbiY3uuOaTV+lNZ3/AEm/1OmfhaO5S45pe6l8S/G4aG+q/g/ycvpLSzhFOq1zKbSQ1pIkbbYp8QuM11En728yJ8Vo6Rcari5zGiTMAkgbpKyDR4+6D8711YsOlczzuI42MnVX/YL8J91o5z4JQN/dJ4nwIKf7I/gHzwS30Y+6OMLpSo4ZZdT3SDa8bCPnYAhq6QBqO8z6SlOAGbQfnehOGPdFu2EyVBX1HN0sbRxnzV/WRtHesrMOpoG+SikHO3ZfzS1DeOI59Zu3wVY5+fySywbeB9Ch9mDaAR89idgooM1WjOeMeSp9Ru3uPjCplEDds1eKV7ITkd8keaW5SUQm1hkQeRvzUDx/EOAjxVBg2HiVRA28E9yqXQhqgHX/ALfNCNJaTF/NXUFsjxj0WcsGrxd5FS3RcYxZ741h8wlv0sbWjv8ANeZGkuNyTwA8moy8657ZNt1vRcXhs9pyiehHSLNbhyVHpimNc8F5z2jNg58dQVjSm3GE77mO4QjwwU1XI756cbqCo9ME5ADeT/iuC3SIyB4hwt8So6WdrvnbPqqWEh5l0O79qn9LomdL9nP9V552kkm2I6rAHyso1zh+Ibw31lPwbF6xFcz0D+mjsPPyhZqnSJOUDgZ8FzmVOO3Ib4sV3ehvo3U0puNuGnTkgOe89aM8IAuNWpZyxxgrkaQzObqBlZ0tUb7rgBuYJ/2lVV6SqOvicTnJaDfx7l3qf0GqAkGtTDbZCZ3hZf8A0hVDzdgaMnYiS69iGgeJUKeDuims3WzinpGp+IzEWGGO4KxpFTUe2+vfNiu+z6Lk29q4E5AsME6/veS6egfQZudarUJnJvVHGZnkE5ZsEVv9iFDPJ+z9zyLdIqxZ3ZZjIHEWS216pcS2pDjmIG73cu5fQq+l6NRYabcJDc2OLTukZnUvn3Tf0le55borWsbJBdGG+XVAy4gox5FP3ScylD3y3VawPWe4ntgTFhHcrdpdYgtLjGwho8j4rzD9Gc4y+oXE5zLjzKbSBGbnOG+43Oz5yuiOnt9DinKf8mehp1HjNrTaJLWO7yCnN06rGFtQtFrDCPBswuLRrFuVSpHb1h3rbT0t/wDA7kDHAq9EX0Rj42Re8xrmuJlxe7eCfIDvUxgbd4A8Lpra2XVknO1mmPxRdNv2E7Y/S2SdkNW92ZzXcNZ+Ez4+Ss1XkZg9nqDCa6dZAz1iOBJEK2PBzcCD92QZ3bQkCMznvmIG60+IV+1OU88PqtbtHaYtPHxlIqaFGviSOFpRaBx6szuntI7IP/ElBi2HmfWFp+qDbfw4nLmEt1ESBcXjjvBKtMxkhMic7/0oC8bb5XEDcmuiYGIneShka79keQTItCnC3vbiRbhCED+Ic+cLQ2icwO4+KRUfGo8CT5pqS7iqXYjqY7PGUBo7DZRzDtPrzKUaTheRxM/kjUNRfcYKe0gd08IulvwjWeACWaW1o4W5RZGypAiXCNv5oUl1L0sjn0z95vd6Ko2dwy70NRgP3cWqwaO8pLmQ6AwgbfnzRZSj5jXuI+67l5SlPqHWw/PIoMAJz3y7ZsV1Ra7oGyxCWotRQTXxYhw7esedygcROZHd5IX0wRMNsP4vzlRtNoEvBM5XKVstJG40XRMEbxHMKNo9o4AJP1+9nmP5bfE4SnfXJE9U/CPF11KgjreWXKwXteBF41gtaRG4hUx4NsLb6wHDlIKD7QfqED+Zve0C3NFR059+sIFzDZjiTbiqoi0ubGEt1nhAnvEo/rJGTCd0j/jAQfaBz6xjUMIJPJLZptW+Euvrd5AI3JbibhpJgYqTADqc+CR2AKUektEacPs3VqpIAY1xYwDWXVDmdgC59L2rz1sRGwQ0HfGpPoM9mQ8OAcPdAFtc3Nj3gyeMSjtzocZx1f8AN/I9f0N0t7NrvZ0WBxYQBBa6oBJgF17xkdcbhl6M+ljnvLatV1Mmeo4UxTb1oGHCJcTe7iPdsCvK1+kHF7XgzhjODDsp7ZGu2vsVaRULyHYy0xE7NkGxhcTxqTs7I8Qo+yfStK6TbT6wljQLvIcGTexAIOrWsnQH0uNZrmy0OJOokBuQJlx74XhNG0iqJa+o5zHCMUh5GrN0GIOVlj0nQzj9o5wJOZMzl+LPvUPF0o0Wfqme66T+ldak7qQbiLWNrkZCey/BJd9PajmQ+7ry2C0chnq1n15bNEa9jXA3i4JLp3EC3GFhqaO0fh7/AJCuMIXujOeTIlszXpnSjagk2J2Dy/Nc57ZyIO4HvTG09ia0fNl3QjFLY8zJKTe5lbR+R+ab9X1/r3LSLa47PVGx38p3R5SrszpiKdPf89psj9lH4DruR+icHjW2/YT6o8Y2dpvKWolxfMXTaRkLdhafJEKrwJjLeOW1A8tzMgdsR3gq2OGpzsv4e689yB0y21HCItfMeYhEKzpJxZ6yBusBHilvqkZOO4gjxcFHaSQLhnMz3SEml2GnLoxtapB6uInbt4au/IK3VDbFOVtfC6yDSBmYG7EZ3W80X1ozbLtDh5JUkDc5G01JuN0CM9pkwEprjOe3OCfG6T9ZeZAwxE3DieazOqPm4/2x4otITjJmotI90Nk5mPVRtPDfCM9WXj5oHVS6AAeTfLJL9oQL5zlaTzsp8SPmPwp9GjU2qTIuBsmD3TKRXZBJ2nPOY3cEsVTrHbqEbxqR4ichvBnLWnFxfIUta2YYAw5tnaZB7Isl02Z2ueIPEKnPES4ARqFp5JUtOt415jvRp3uw1bVX78AiIPvAHVY+IS6z4F4IEwcuU5ptSm6DDmlo5ngQs4e/Iidwy77Kk0OgQwEdWAeUclYYRmZ7/KUTSNgHM+HkhcxoGK2eUOHMEWRaQU2DVadU/EPVCQQLB3z2mFbw07OBarJEZkdpkeKaYcgA2bujttt3BUaRmxwjtB8QUbQSTDtW0nwS3hw+9PBtuYCL8it+6M+CR7ojK7gO4SVop0GgAuEDbc9xN0Ta7veLWNjeY7JI8lKunvPukN2GLndNzvgpt7HQlbqw6fR4JmCBqkRO6/ktf1VgsST8xwXG0ys91jUcGm0N+/nm/VuCttVzQcssoLr7TiCjW2ytKpHQq9IUWHAHMBy6rXPIPaYgc1PtVoAsXHg3LW7WsVHSBAgDO5IaL7LDs8E8UgTAGewR27dhHNQ5bcx9dkPo1H1ZJOFv4Bab/eOxbm0I3nhPZZc3o5zWlwBnFvJMfJXRbWkEHU6x2CJXFn1m+LSzFW0W5OrO8HWJU0yhDoblAI15p9V0kAza3b3ZrH7adeVu0R2HNPB5k5l2JTe28yDqyI7ZlOD5EWg21/okuM5gO7fm6gcBrDdUEx45LpcX0ZjGS6otrsAjDAnMSeAIMLWyoxxGrme3elUyCLkHYRHjrRUtGkyI4AWUNSfM1TS2RodTjIAd6HEiLnDOeSIOccpEbcJJ8FUXL+RElD+IrFu+eChIOqe/lIV+1Is4a7yE5tEG4g9kK7mZ6Yf0IDBsjwQmRqPbEosDhJiRqgzHAJlJhORvsNibaozRKUo7sUYxlshIrDW07xNuVkQZORnskT3wgry09aW72yO8W7kTC05sa7YW+ZGXGUvFh7w/CyJ+yQy3W4dhBI9OaUa+Hs2534AEdyntYNi7PKAY3p/tS7Mt4dU8REFWvJmcr6r9+ooVWHWe33fGZV4BkCOIB8UD6L/4d56vK8IX0iMyBxJHOCO9UZ12YRoHaeAI8CoJGeIcz3wqa0gGHW2gjPgbKNDh70xuaZ4i6Tm1zQeHfUZSqEZGJtk78pTWOgyRIy96Z4G/LJLD2jIncL+cpTagmxve1wlaYU4j3gB1g4zt1WnUlVWnMGRG13mbqB8Gw43tzbdTHBvbXJw37OqZHcpuPcdPsDScdZjsM+EKzFjiHf8AoEQ01s+7FsnX8SVnqtBvETlaB4R3q05diWo/v/hoLZkTE8UBDp945ZZAX1RwSGgCwjg4DuutFJs5Ejs/QK6iTclyFOJE533n/kFALe6eEfkmGodojtEeMFBjPPWDHj4p7cg3KdXOsHLY+O6QkEgn3eLZy4LQGkbd8h/eJVNJ1kHhHmhRHqMzwDrbGwkE9/qrZMQCYnVJ8E2uwawN+tZNI0BhjqjfICmUPJMuEk+rQVPo91T3jjjVkCdUrTVY5v3GxtsZ1XuI+bKKJSdM3W8bZna/EbtiNcyZ7k5+jEQSMIdfMTAOwW7goonzqyG6uhwYANhjM3sTfIWyCjpLRhLtc5QIyjWooopWVboChTEAmZdOvXrIAsq0mm5omSQMyDHFRRTNbjg7RVKqTmesMna9x+SoylItn88FFE9EdNiU5OVA0asOLX5tG+PmFppFjx94do1bxN1FFCd8zSq5F1NGc28iM5vw7U2iXRMjfH5BRRPkhtWxrtKc3XLdZMEciJ8UTaw2luuBrv2BRRDlSsWncA6SJPXJ7CDvPZlKaykHZkZTlGedwJ2KlFljyOU9LLnjUY2hYols4nHLqkajkMQvbdtWY6Q7FDyPGRE9iiic8sovYUcMJLcZ9otgADxg8DKSdIbJJbBGy3gYUUXRBKa3RzSuL2YWCm6Ze5picp8BbmhGhBvWa8kDO0W4lUoo0xtqkW5SpOw6DpdYujDYSL75hGKjri1pizYEbZ17lFEpwUY2hQm5yplMc8yScvvdu5NNT8WWTjDe6ZKiiyeWVpdzTwY02W4tuW3i8QPGAVkr1YiYzibWOcSROsc1FEeJJNrsLw4tJ9x7W4RiIBBiD6/oipgOHVE9hy3QVFFnHPKUU3XOi5YYxk0m+QP1IOyJYRkAQQdsCAAgcI90hx2EEH0/VRRdsYI4XNidI0gs6tSROrqlU2hOQvnqHmFaizvematVG0TA7WTznxCH2rmmDHL9VFFrbVkJJoa58nqkneBBjO1kgVNQwk3tBEc1FERbYaVuEHuv1Z7QR3zlwSTWvBaZGwjzUUVW7qwik1yP/9k="
encdoedDataString = encodedDataString.replace("data:image/jpeg;base64,","");
byte[] imageAsBytes = Base64.decode(encodedDataString.getBytes(), 0);
imgView.setImageBitmap(BitmapFactory.decodeByteArray(
imageAsBytes, 0, imageAsBytes.length));
You don't need the data:image/jpeg;base64, at the start of the string, that is actually not part of Base64 encoding per se but a Base64 Data URI for a web browser. Just pass the string from /9j/4AAQSkZJRgABAQAAAQABA... onwards and it will decode properly.
All I need is convert byte[] to String. Then do something with that string and convert back to byte[] array. But in this testing I'm just convert byte[] to string and convert back to byte[] and the result is different.
to convert byte[] to string by using this:
byte[] byteEntity = EntityUtils.toByteArray(entity);
String s = new String(byteEntity,"UTF-8");
Then i tried:
byte[] byteTest = s.getBytes("UTF-8");
Then i complared it:
if (byteEntity.equals(byteTest) Log.i("test","equal");
else Log.i("test","diff");
So the result is different.
I searched in stackoverflow about this but it doesn't match my case. The point is my data is .png picture so the string converted is unreadable. Thanks in advance.
Solved
Using something like this.
byte[] mByteEntity = EntityUtils.toByteArray(entity);
byte[] mByteDecrypted = clip_xor(mByteEntity,"your_key".getBytes());
baos.write(mByteDecrypted);
InputStream in = new ByteArrayInputStream(baos.toByteArray());
and this is function clip_xor
protected byte[] clip_xor(byte[] data, byte[] key) {
int num_key = key.length;
int num_data = data.length;
try {
if (num_key > 0) {
for (int i = 0, j = 0; i < num_data; i++, j = (j + 1)
% num_key) {
data[i] ^= key[j];
}
}
} catch (Exception ex) {
Log.i("error", ex.toString());
}
return data;
}
Hope this will useful for someone face same problem. Thanks you your all for helping me solve this.
Special thanks for P'krit_s
primitive arrays are actually Objects (that's why they have .equals method) but they do not implement the contract of equality (hashCode and equals) needed for comparison. You cannot also use == since according to docs, .getBytes will return a new instance byte[]. You should use Arrays.equals(byteEntity, byteTest) to test equality.
Have a look to the answer here.
In that case my target was transform a png image in a bytestream to display it in embedded browser (it was a particular case where browser did not show directly the png).
You may use the logic of that solution to convert png to byte and then to String.
Then reverse the order of operations to get back to the original file.
I'm developing an Android App that should send an image to my ASP.NET Web Service where the image will be saved as a file. I've seen a couple of ways to do this and I went for this one: convert the image to a byte array -> convert the byte array to a string -> send the string to the web service using KSOAP2 -> receive the String at the Web Service -> convert it to a byte array ->
Save it as an image:
IVtest = (ImageView)findViewById(R.id.carticon);
BitmapDrawable drawable = (BitmapDrawable) IVtest.getDrawable();
Bitmap bitmap = drawable.getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] data = baos.toByteArray();
ImageView image=new ImageView(this);
image.setImageBitmap(bmp);
String strBase64 = Base64.encode(data);
Then I send strBase64 to the web service.
In the Web Service I have this:
public Image ConvertToImage(byte[] image)
{
MemoryStream ms = new MemoryStream(image);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
[WebMethod]
public String UploadImage(String image, String name)
{
byte[] image_byte = Encoding.Unicode.GetBytes(image);
Image convertedImage = ConvertToImage(image_byte);
try {
convertedImage.Save(Server.MapPath("generated_image.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
} catch (Exception e) {
return e.Message;
}
return "Success";
}
I get an error at this line: Image returnImage = Image.FromStream(ms);
This is the error I get:
SoapFault - faultcode: 'soap:Server' faultstring: 'System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.ArgumentException: Parameter is not valid.
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream)
at Service.ConvertToImage(Byte[] image) in e:\FTP\nvm\Service.asmx:line 1366
at Service.UploadImage(String image, String name) in e:\FTP\nvm\Service.asmx:line 1374
--- End of inner exception stack trace ---' faultactor: 'null' detail: org.kxml2.kdom.Node#437bf7b0
Thanks
Seems like there is something iffy with your conversion from string to image. Also you are not disposing your stream which will leak memory.
Try this instead:
private Image Base64ToImage(string base64String)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
using (var ms = new MemoryStream(imageBytes, 0,
imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
return image;
}
}