how can i store an icon into Blob?
anyone please help me on this topic
Drawable icon = p.applicationInfo.loadIcon(getPackageManager());
Blob b;
I have try this ::
button1 = (Button)findViewById(R.id.button1);
try{
ImageView iv = (ImageView) findViewById(R.id.splashImageView);
ImageView iv2 = (ImageView)findViewById(R.id.imageView1);
Drawable d =iv.getBackground();
BitmapDrawable bitDw = ((BitmapDrawable) d);
Bitmap bitmap = bitDw.getBitmap();
System.out.println(".....d....."+d);
System.out.println("...bitDw...."+bitDw);
System.out.println("....bitmap...."+bitmap);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageInByte = stream.toByteArray();
System.out.println("imageInByte"+imageInByte);
String s = imageInByte.toString();
byte[] imageInByte2 = s.getBytes();
Bitmap btmp = convertByteArrayToBitmap(imageInByte2);
/*iv.setImageResource(R.drawable.icon);*/
iv2.setImageBitmap(btmp);
}catch (Exception e) {
e.printStackTrace();
}
// i1.insertDataUser("tableName",3,"appname","pname", "versionName", 2,"s", 2121);
/* int a = i1.GetUserData(getApplicationContext(), "tablename",1);
System.out.println("a is "+a);
System.out.println(" i1.app_id"+i1.app_name);
System.out.println(" i1.app_id"+i1.pname);
System.out.println(" i1.app_id"+i1.version_name);
System.out.println(" i1.app_id"+i1.versionCode);
System.out.println(" i1.app_id"+i1.date);
System.out.println(" i1.app_id"+i1.icon);*/
}
public static Bitmap convertByteArrayToBitmap(
byte[] byteArrayToBeCOnvertedIntoBitMap) {
Bitmap bitMapImage = BitmapFactory.decodeByteArray(
byteArrayToBeCOnvertedIntoBitMap, 0,
byteArrayToBeCOnvertedIntoBitMap.length);
return bitMapImage;
}
I see you convert from Drawable to Bitmap anyway, so you might use this:
import android.util.Base64;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import java.io.ByteArrayOutputStream;
//use this method
private byte[] getBase64Bytes(Bitmap bitmap) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
return Base64.encode(byteArray, Base64.DEFAULT);
}
Convert from Bitmap to byteArray. You can store this as a blob in your database:
Bitmap myBitmap; //should be initialized to some value
byte[] byteArray = getBase64Bytes(myBitmap);
For the sake of completeness, how to convert from byteArray to Bitmap again
public Bitmap getImageFromBase64Blob(byte[] blob){
byte[] byteArray = Base64.decode(blob, Base64.DEFAULT);
Bitmap bitmap= BitmapFactory.decodeByteArray(byteArray , 0, byteArray.length);
return bitmap;
}
Related
It's my MySql DB
Its encoding:-
public String convertBitmapToString(Bitmap bmp) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); //compress to which format you want.
byte[] byte_arr = stream.toByteArray();
String imageStr = Base64.encodeToString(byte_arr, 1);
return imageStr;
}
This is decoding:-
String img=o.toString();
byte[] imageAsBytes = Base64.decode(img.getBytes(), Base64.DEFAULT);
imageView.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
Thank you.
It could be done by
private String getBase64String() {
// give your image file url in mCurrentPhotoPath
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// In case you want to compress your image, here it's at 40%
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
return Base64.encodeToString(byteArray, Base64.DEFAULT);
}
And for Decode
private void decodeBase64AndSetImage(String completeImageData, ImageView imageView) {
// Incase you're storing into aws or other places where we have extension stored in the starting.
String imageDataBytes = completeImageData.substring(completeImageData.indexOf(",")+1);
InputStream stream = new ByteArrayInputStream(Base64.decode(imageDataBytes.getBytes(), Base64.DEFAULT));
Bitmap bitmap = BitmapFactory.decodeStream(stream);
imageView.setImageBitmap(bitmap);
}
I am able to get an encoded String using the following code :
public static String encodeToBase64(Bitmap image, Bitmap.CompressFormat compressFormat, int quality) {
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
image.compress(compressFormat, quality, byteArrayOS);
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.NO_WRAP);
}
BitmapDrawable drawable = (BitmapDrawable) imgPreview.getDrawable();
Bitmap bitmap = drawable.getBitmap();
encodedImage = encodeToBase64(bitmap, Bitmap.CompressFormat.JPEG, 100);
I get the following as String
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
But when i try to decode it using http://freeonlinetools24.com/base64-image nothing shows.
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteStream);
byte[] byteArray = byteStream.toByteArray();
String baseString = Base64.encodeToString(byteArray,Base64.DEFAULT);
This worked for me.
I have found out the problem. The problem was with the logcat from where i was copying the encoded string. Logcat didn't display the entire String so the broken string didn't decode the image for me.
So when i passed the encoded string directly to the decode function the image was visible.
I checked an image with given link http://freeonlinetools24.com/base64-image and it works fine. I think the reason for getting wrong output is your string. Encoded string always ends with == . Check your encoded string.
Example Code
Encode Image
BitmapDrawable drawable = (BitmapDrawable) imgPreview.getDrawable();
Bitmap bitmap = drawable.getBitmap();
encodedImage = encodeToBase64(bitmap, Bitmap.CompressFormat.JPEG, 100);
public static String encodeToBase64(Bitmap image, Bitmap.CompressFormat compressFormat, int quality)
{
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
image.compress(compressFormat, quality, byteArrayOS);
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT);
}
Decode Image
Bitmap bitmap = decodeBase64(encodedImage );
img.setImageBitmap(bitmap);
public static Bitmap decodeBase64(String input)
{
byte[] decodedBytes = Base64.decode(input,0);
return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
}
EDITED
see my string..
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAbhUlEQVR42u2df5BV5XnHn7u7yu4CsoATcRRZbWSxMxHWfxRTcdUwNJqJpBpNqlO22lE7YkGTaFKMXmaw0bRVbDFgKrj8kTGVZgSjSR1RVwXRZopLmk4EE10KjZqKLCi/NGrf595zlrNnz7nn53veH+f7mTmc/XH33vcu+3zf9/nxPm+FgLEsXfLFDnGb5Xza49w7nYvh78/M+DLbxDXkfDzoXEy/cx+4866fDyV7SqALFdUDANEIQ2cj76S6sfPFhn2+6nH5eJ7qQjHgXINCGAZUDwo0BgKgGY6x99BRY886g6uGVxCuKPRDFPQCAqAYYfA9VDd4vnSb1WXBq4V+qgtCv+rBlBkIQMF4Zvj5VB6Dj4IFYT1hhVA4EIACEEbPxt5DdaOfpno8mrOTjorBetWDsR0IgCQco3evCarHYyj7qC4G6yEGcoAA5IizvF9MMHoZuGKwHG5CfkAAMuLk4nupbvhY3hcDuwnLxdWHGoRsQABS4kTve8W1QPVYSs5aqgtBv+qBmAgEICHC8HvFrUqY7XWDVwVVIQR9qgdiEhCAGDjL/MXOBd9ebzhWwO7BcrgH0UAAGiAMv5PqRt9LMHzTYCHoo7oQDKoejK5AAAJwDL9K8O9tgeMEVQjBaCAAHjxL/TtVjwVIYSnBNRgBBIDg45cMxAg8lF4AENUvLcgaUIkFwKna45kAG3LKDW9EWlzW6sLSCYCz3K+Ka5HqsQCtuJ/qK4JSuQWlEgBng04fwc8HwXB8oLdMG49KIQBOWq+PsNwH8WC3oLcMaUPrBUAYP0f2q4RZHySDVwPsEixXPRCZWCsAjq/PSznM+iALvBqYb2tswEoBgK8Pcsba2IBVAoAIP5CMdZkCawTAyev3kflttIHecJvzXlvqBqwQACz5QcFY4xIYLwDC+DlKiyU/UMH9QgQWqx5EFowVAET5gSYYnSUwUgAcf5+NHxt4gA4YGxcwTgCcZpxs/PD3gU5wXGC+ac1JjRIAZ+vuw6rHAUAD/tKkLcbGCIAw/iqhUw8wg6VCBKqqBxEHIwRAGH8foT8fMIu1QgR6VQ8iCu0FAMYPDEZ7EdBaAGD8wAK0FgEtBcDJ8fcTynqBHXCasEfHWgHtBADGDyxFSxHQUQC4mALGD2xkmxCAWaoH4UUrAYDPD0qAVjEBbQQAxg9KhDYioIUAwPhBCdFCBJQLACr8QIlRXjGoVABQ2w+A2r0DygTA2dX3nKrXB0AjLlC1i1CJADj7+fkNY0svAPWtxD0q+gkULgAo9AEgECWFQioEoJ/QxguAIJ4XAtBT5AsWKgBo4AlAJIU2Gi1MAJzW3Y8V9XoAGMxXimo5XogAIOgHQCIKCwpKFwAE/QBIRSFBwSIEAH4/AOmQHg+QKgDw+wHIjNR4gDQBcJb+gwS/H4AscDygU5YrIFMA+gn5fgDyQFp9gBQBEMbPfst9Mn8jAJSMm4UILM/7SXMXAGH8neLG6Qss/QHID3YFZgkRGMzzSWUIQD9h6Q+ADHJ3BXIVAET9AZBOrlmB3AQAUX8ACiHXrECeAoCCHwCKIbcCoVwEwKn1f1XprwSActGdx16BvASgnxD4A6BIcgkIZhYANPYEQBmZG4pmEgAn8MfLkGmqfxMAlJCdVK8NSB0QzCoAVUJPfwBUkulsgdQCgLQfAFqQKS2YRQCqhNkfAB1IvQpIJQBOvf+bqt81AGCYU9PsE0grAH2EwzxBjnSeembD7w8NvUNDe99RPUydSXXYaGIBwOwP0sJGfsKJp9EUcXV0nEAdE0+gCR2fSfw8O9/8Lzp8+AC9/dZv6Z233qC3334D4lAn8SogjQD0EWZ/ZXhnygnCgDpiGBAbCRsMU+RMOuOM2TTttDPFmD9HJ0w5Tepr7Rv6vRCEN+i1X28RAvHLsgpC4hLhRAKAyL98WlvHihnyj2ozJc+QU4ThtLaNlWJA3pl0SBjQPmE0g8J4ssBGP/OsuTWjHyPeiyreEauCga0babsQhBKJQeKMQFIBqBIi/7nCM/o0YSxs9KqNxoVn0l+88hT95y8ep6ZK9J8IC9X5F15VM34dxu+HhW7g1Y20bevTqodSBIkyAkkFgJUFs38G2P/tEobiGr6ObHnp57TukeW11cHkSWPpmGOaAx/H74ENX9f34YfdhJdfWl8TAtclspB9QgA64j44tgCg5j89PDN2/fFsbWdIL2vX3EVbNv9sxNc6Otqpve2Y4c9NM3w/R4Tx9z/7I3rlpUJO31JB7D0CSQRgkFDzHxue6c8+d74RRs8cOvQB3fv9hbTrf14P/H57+7HU2dlZM/yZ3V9QPdxc4BXBhp/cmznuoSE7hQB0xnlgLAEQxt8jbs+pfle6wwE8DoCdIww/TXpLFbt3/YZWrvg27Xn3rdDHXDT3SvrSpddSW5v+YpaU7b9+WQjBP9rmFlwgRKA/6kFxBaCPkPoLxQ2CmTgzsvHf+/0b6eDBDwK/394+jm5YeDdN7+pWPVSpsFvAqwFOI1pCrMKgSAFwUn97Vb8bHWFfmJf5XWeco3ooqYgyfjb6v77pbjHrj1M91MJ4ZcsGeurJB1UPIy8mRqUE4wgADvnwYXoQjHlvz9u0rLog1Phnf/5iWnDNEtXDVALXEKx96DYbXILIw0TiCMAgIfhXw+SlvpeogN+Ca2+n2ed+UfUwlfK/u39D6368jPYP/V71ULIQGQxsKABo9lmHg3u81OfgngkR/SjY+HdsD/5vhfEf5dChA/TwD79F7/7foOqhZKFh89AoAeijkgf/eLl/6WW3GBXVb8QTj6+hJzasDvwejH80vFpa/eC36L13d6oeSloaBgOjBKC0lX88659/0dV09uxLVQ8lN3jW59k/iCu+vogu/MIVqoeoJRwsZRGo0BHVQ0lDw8rAUAEo8zFfts36DM9ky6q9gbn+Mgf84sIicN/fX0cTjmtVPZQ0hB4n1kgA+qiEy38O8vFlG+t+/E/0zNP/OurrU085nZbc2ad6eEbw7MZH6fHHfkAdHW2xNklpRKgb0EgASrX85yX/lVfdYXRqLwyevTjl54eLfG6vrqVJk6eoHqIxrFrxHfrvX22myZPHmiQCoW5A4Dso2/Kf6/bZ+G1a8nsJi/rD708Ou1JLbr0scqekhgS6AWECUJqDPnmzDvv7NqT3gggL/GHpnx52BR595H5qaqrQcce1jdgpqTGB3YLCBGCQSlD8wxt3Lv2zm1UPQyphs/8tt66wvr5fJktuu3w4oDpBiMDYsceqHlIUgUVBowSgLMU/ZTB+Lvf9W7Fc9cOGzwIA0uNfWfF26Y4JbaqHFcWooqAgAbC+9r8Mxs+ERf4x++eDdxXAjBnTQhMntuscHBy1NyBIAPrJ4qO+y2L8zC03zRu12Qe+f35w67S1q5eN+BoHBXkloGlwcNSR4kEC8KnqUcqiTMYfFvxDuW9+uBkBv8hycFDXDIEQgBE2P+ITmzv/cLT/iqu+q3oYhRG2/L9vxVOl2t8vm6Aeii7+XoqaMKJTkF8AqmRh22/O8y+49h5rU31B3LW0d9R2XwT/8mfbqy/W2qmFMXbsGN3Kh0e0DfcLQD9Z5v9zhd/1Cx+wtsgnCF6a3rxw3qivo/Anf8J+1144Q3CcEAFNgoMj4gB+AbDO/+cKP1NbdqUlzP9H9F8OQastPxwP0KV82BsHGP7Axvw/N/GYd/F1qodROG6lmp9VqzerHpqVNIoDeGlubqJJE9t1CA4O1wN4BcCq/D/7/dfdWE5/N6jpx+TjT6S77vk31UOzkkZNVvxwhoDThK2tSoODw/UAXgHoI4u2/16/cIX0E2l1Jaj8FwFAeUQFAoNQnCEY3h7sFQBeEsxUNaI8sXVPf1wgAMXSqNNSIxSWD28TAsAu/wgBsCIAyJ17rxdL/zKl/PwECQC6/sgjrQAwqsqH3UBg7R+bAoC8tdf0tt1ZCRIAPtbrS1++RvXQrCSLADAcFOTgIAcJC6QWCHQFwIoGIGUO/HkJEoBZ3XPohoXfUz00K8kqAIyC8uFagxBXAKpkQQUgV/vZ2NIrKYgBFEseAsAU3GCkVhHoCgC3CjK6/zVm/6NAAIolTRagEePHtdL48WNkD3uDEID5rgD0k+ElwPD9j4I6gGJJUgcQlwIyBLWSYFcAjM4AcOT/b77xsOphaAMqAYslbiVgUmSXD3MmoGLD8d9lz/v7wV6AYomzFyAtksuHJ1Zs6AGw6Jt9pdrtF0XYDjWkAvMnzm7ArHBwkGsFxhzbkvdTX2C8ACD4Fwz6ARRDUFswWUgoH64JQJUMTgHOu+R6qw7wzAt0BCoGWf5/GDk3GFlqvABg+R9M2HFg6AmYH2E9AWXDOwlzOp+wJgB9ZOguQET/G+NvW82gK3B+FLn895NThmBtxeQagDJ1+U0DzgWQS5DAFkkO5cPPGy0AKP5pDE4GkofK2d9LxvLhmgAY2wegzE0/4sLHWQ+8+sKor2MVkA3Vs7+flOcTbquYXAV4x7Lioq+mgtOB8yes0lI1acqHjRWAzlPPpL+49m7VwzCCsBOC0SY8OexWcXal6Mh/XJI2GDFWAMp20k8WwmIB7e3jhCvwAJ089bOqh2gMYWKqE0nOJzRWAFD/n4ywjAC7AhwPQHFQNLou/YOImyGAAJQELlpZVu0NDFyhX2A0eTX9KJqo8mFjBQAlwMlp9EeMjULhcFXlvd+/UVu/P4pG5cPGCgDaf6WjUfMKlAmPRvegX1zCzieEAJSQRoEsiMBR2Pi51Zesvf5FE1Q+DAEoIRwPYBEI+8NGetD8ZX8Y/uAgBKCkRO1kK3NgUNUuv6Lwnk8IASgxUbNcmVOEYWlTm+AMgbECgDRgPkSJABcLLbjmdprZfZ7qoRZKlJtkCxAAECvYxS4BxwbKtBqwNQ7gxVgBOPvc+TTv4utUD8Ma4sx4vBr46tcXlypLENZZyRaMFQBsBpJDHN+XYwNf/dqi0mwn1mXvvwyMFQC0A5MHH3W1ds2yyKUvC8DsP7mkFCsCW0XA6IYg6AcgD44L9Ik/+Dg73/jYsYvmXlGLE+gYI+D3MmnylMzPY1tMoFKpbDe6JRhSgfLhmW/dI8tj/9HzMeQzz5oj7ucpFQM2Vm7XvWXzk7Wx82rlorlXZs5m8PPy6siG7EBTU+U/jBYAbAgqBg4QPrFhTeK8OBvd9Bln1e+S4wU8y28Xq5Udr20VLswLDdOaM7vn1IUqpRik/X3ohisAfWRoW3A0BSkWNrKfblid+iAMFoGpp0wXLsMUOnnq6cIYxyduRsLGx7PvHjEW3trMBr971+upluUsBtO7hEDN6K6NJ6lIsXvEG6t0bxASRlNT00+MPhiktXUs3Xr7OtXDKB1ZhSAIjiNMbuCnF2VknOFg14VXLmHjch/jUvTpQHkhBOBeowWAQWdgdfBs/MzTj9b++HXqkAvi4QpADxl8OCgKgvSAZ2gWgkb+N9CL5uamS4wXANQD6AeLAdcS7Ni+tfBouRvk4yU8L91NbONVFK4AdIiP96oeTBaQDtQXN2jHorBb3Hftej03d4GNnYN3HFg8WfjlXV3dI/L9ZdjRl4Vjj205vtYaxNRqQBecEWgenE8/ePD9ERH8QwdZLHaMeFwtCCcuFzdS7w/EBXHLTfPgjjTgwTUvVVwB6CdDawFcbrt9HY1pHat6GEATbC3dzQuuAVj50OazXQFYL25GV9RgezDwctfSXiuq9WQhBGCjEIC5rgBUyeBUIMM1AYu+2YdVADC2h3+RcApw5UObvuEKwHxxe0z1oLKCVQBgTDi+SzXNzU1X/+BfNv3IFYBZ4mb8bwyrAIDZPx5CAGYLAXh5uEG46ZkAF6wCys2S2y5HVWIMOAPAd68AGNsXwA+vAiZ0fEb1MEDBmHR4p0q4D8Cq1Ztn1D52v2jyrkA/aBdWPmw5wqsIeBfgyoc2Xc4fewVgsbjdp3pweYFeAeUCgb/4CP//u8L/rxVJeAXAikCgCwcEr1/4AFyBEoClfzLcACB/POKoUFsCgS5wBezHtj59ReAGABm/APST4SXBfpAVsJeynN6TJ24JsPu5XwCqZHhFYBBXXnUHdZ1xjuphgJwxtROPStwKQPdzvwD0kMG9AcLgeMCCv7oHnYMsAn5/OrgHgPD/h1Wz4n+AbXEAF1QJ2gN2+qXH6/8zQQLQT5bFAVymnHharXkIRMBcbD+rTyZ+/58JEgCr6gH8QATMBRH/bHjz/y5BAmBVPUAQEAHzgPFnx5v/d6kEPVCIwKC4TVM9YJlABMwBxp+dSqXyu1WrN5806utBDxYCsFzcFqketGxYBDhFiGpBfUHALx+amprWrHxo07X+r4cJgBUNQuKAFKG+INWXH24DEP/XK2E/IERgSNwmqB54EWDjkH6gyCc/xPL/A7H8Hx/4vbAfsml7cCOwX0AveFvvyhXfRnlvjni3//ppJADWuwHYMagXfJrQ2jXLEOzLmbDlP1Np9IO2uwHYI6AHvKnniQ1rcIqPBBot/2vfb/TDNrsB2CWoB9zEg/199PGTQ6PlPxMlAFYWBeEoMfXwrM8RfgT65BJU/OOlEvUEthUFoQBIPZzee2LDavj6kgkr/hnxmKgnsWlvAIxfLVjuF0tQ7b+fOAJg/PHhDIxfHWz4POOjaWex8PHf/7zqhT2NHhMpAIzpwUAYvxo4rceRfRh+8UQF/1ziCkAPGdopCMZfLBzcGxCGzzM+lvrq8Hf+CSOWADAmBgM52v+nF19XuPHzzDf1lNNp0uQpqn8FhcE79ni23/bqCwjuKSZO8G/4sXGfVAhAr7g9rPrNxaXoPD+XsD7z9KO0ZfOTwwYwq3uOEKE54n4etbWNU/0rkfKeB4TBcyoPpbv6IGb/m8TsvyLOY2MLAGNCZSCX93KF37RTPyf9tdzl7pZNT0b6ua4YdHV1G70y4Jl+x/atMHpNiar8G/X4JE+ue9vwGWfMpksvu0Xqkt81+m1bX6jNfmlg92B611ni6qbpM7q1Xh3wLL9diNuO17bWRA5+vd74235HkVQAOCU4SJqtAnjW/7IwfBYAGbiz3oAwehkRbRaEk6eePnxnYVABixvP6vwed4v7rl2vw+ANgmf/Y45p7oxK/Y34maQvolu3oDkX/Dmdc+5XqLUtn1nfbwRs+CqCWpOPP5EmC1dh6inTqa19HE0VwsD39vbxQiQ+m/p5XQHbI2Z2Nm732i2MHcE7swnr+tOINALQKW5vqn6zZ866iM6/8GqaOOmERD/nncFtMIJ2IQq8agjCFTNQDsTsP33Fgy8m+g9PLACM6sKgjz/+hD44SHTSSY1nQhSggLIQt/DHT1oB6CTFqwAWgff2HqSPPvpY5TAAUA77/i0tTWclnf1rP5v2RXXICHzy6ae0f/9hsWz/UOUwAFBK0si/lywCoE1G4MCBD2nf/kOqhwFA4aSJ/I/4+SwvrsMqwIVdgT3vHaBPPrHybFMAAsky+zNZBYBXAQOkyR4Bdgn27DmAuAAoBVzzL2b/M9PO/rXnyDoIHfcI7Nt/WLgFR1QPAwCpJKn5DyOzADA6Hil+8NBHtH//IbgEwEqCjvpOQ14CoGXzUHYFhvYdgksArCOq2WdcchEARrcSYReOCwwNHaLDhz9SPRQAciFNyW8YeQqANmnBIN5//wi9/8Fh1cMAIBNZ036jni/Pwel+nNiRD/9Ae/ceRFwAGEujY77SkKsAMDoGBL2ghBiYSl6BPy8yBKCT6rUBWroCLhwcRAkxMIUs9f4Nn1fGYE05TIRThUNDB1UPA4BI4hzykQYpAsDo7gq4sCvALgG7BgDoiIylv4tMAdA6K+CFU4UcHDxy5A+qhwLACPKO+o96fpmD1z0r4AepQqAbeUf9/UgVAEbXAqEwuGCIA4RIFQLV5FnwE0YRAsCuQL+4Zsp+rbxACTFQjVj6bxdL/8/LWvoPv04Rb8bZK9BPBsQDXNBtCKiC/f6mpsrcPGr9I1+rqDdlWjzABd2GQNHI9vu9FCYAjGnxABd0GwJFUYTf76VQAWBMqQ/wg25DQDYy8/1hqBAA44KCXtBtCMigqKDfqNdV8WZNDAp6QbchkCdFBv1GvbaqNy1EoEfcnlP1+llBqhDkRXNz0yXC+H+m4rWVCQCjY0PRJKDbEMhKHo09s6BUABidzhZIC0qIQRqy9vTPA+UCwKg+bDQP0G0IJCHtYZ55o4UAMDaIALoNgTjoYvyMNgLA2CACDLoNgTB0Mn5GKwFghAhwOzEjawS8oNsQ8KOi0CcKHQXA6EIhL+g2BFxUFfpEjkv1AIKwSQTQbQjoavy1sakeQCNsiQkwSBWWE918fj9aCwBjkwig21C50N34Ge0FgLFJBFBCXA5MMH7GCAFgbKgYdEG3IbvRocIvLsYIAGP63gE/6DZkH6pr+5NilAAwzi7C9WToVmI/6DZkB86W3itV7epLPW7VA0iD00+gjyxIEzLoNmQ2nOYTxt+rYj9/5rGrHkBanFoBXgkY114sDHQbMg+u7mtpab5Yxxx/HIwVABdTG42GgW5D5lB0A08ZGC8AjNNyvI8sigsgVagvjr9/Q1Gtu6W+F9UDyAsb4wLoNqQfJvv7ge9H9QDyxIkLVMkilwAlxPrAS/6WlqZbTfX3g7BKAFxscwnQbUgtNi35R7031QOQhW1ZAnQbUoMw/I0tLc1fs2nW92KtALgIIVhMdbfAitUAug0VgzPr3yNm/WWqxyL1faoeQBEIEeikuktgxWoA3Ybkwrl9PqBzxYMvvq56LLIphQC42BQbQLeh/LHZ1w99z6oHUDQ2ZQrQbSg/bIzwx6F0AuDi1A1wFaHxbgFShenh5b6Y+RfZktdPSmkFwMXZYlwV1zTVY8kCug0lQxj974Txf8+krbtSfg+qB6ADjluw2LmMjQ+ghDga9vPF9UOx3P+7si33A38fqgegEx4hMLbzELoNBQPDDwYCEICTNqySwX0I0W3oKNyfr7m58p0ypPWSAgFogCMEvCLoJQNdgzJ3G3JnfGH4q2D44UAAYmByjKBs3Yaw1E8GBCAhpmYNbO82hKh+OiAAKXGak/aSQXECG7sNsX9fqdAa05px6gIEICOOe9BLdfdA+1WBDalCZ7Zf2dzctBLL/GxAAHLEqS5kIeA9B9rGCkzsNuT49k+J2f4fylq1JwMIgCScjUfupaUY6F5C7DH6x8q0QadIIAAF4IhBD9XFQCs3QbduQ7y8F9e/C6N/FkYvHwhAwThuQg/VxUCLjUiquw05G3J+Kj7ciOV9sUAAFONkE9xLqSAU1W2IDV786W0Ss/wziN6rBQKgGZ4VwiznKrTNed7dhriNtrh+JYx9gDDDawcEwAAcUeiko6LAqUdpq4U03YbqszrtF39SvxTGvlV8/FsYu/5AAAzGqUGY5Xza49w7nYvh76daQbjdhj788GMxg9O++lcru8Q/O2sfieU735ubm15BLt5c/h/s/pXAGnPaugAAAABJRU5ErkJggg==
You can use the Base64 Android class:
String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);
You'll have to convert your image into a byte array though. Here's an example:
Bitmap bm = BitmapFactory.decodeFile("/path/to/image.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
Encode/Convert image to base64 string
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.yourimage);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);
i have insert blob data in to sqlite and retrive from sqlite that time blob data not set as bitmap on imageview. give msg to fail to load. so please help me for my code. following are my code.
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
imageView.setImageBitmap(bitmap);
ByteArrayOutputStream stream= new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte imginbyte[]=stream.toByteArray();
byte temp[]=imginbyte;
myDb.execSQL("INSERT INTO tableimage VALUES('"+temp+"');");
Cursor c= myDb.rawQuery("SELECT * FROM tableimage", null);
c.moveToLast();
byte asd[]= c.getBlob(c.getColumnIndex("imgpath"));
byte img[]=null;
// BitmapFactory.decodeByteArray(asd, 0, asd.length);
ImageView iv=(ImageView)findViewById(R.id.img2);
ImageView iv1=(ImageView)findViewById(R.id.img3);
iv.setImageBitmap( BitmapFactory.decodeByteArray(asd, 0, asd.length));
iv1.setImageBitmap( BitmapFactory.decodeByteArray(asd, 0, asd.length));
Try this
ByteArrayInputStream imageStreamFront = new ByteArrayInputStream(asd);
Bitmap bitFrontImage = BitmapFactory.decodeStream(imageStreamFront);
if(bitFrontImage!=null)
{
iv.setImageBitmap(bitFrontImage, 40);
}
Without blob store image and retrive. with string database see below code
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
imageView.setImageBitmap(bitmap);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImageString = Base64.encodeToString(b, Base64.DEFAULT);
byte[] bytarray = Base64.decode(encodedImageString, Base64.DEFAULT);
Bitmap bmimage = BitmapFactory.decodeByteArray(bytarray, 0,
bytarray.length);
myDb.execSQL("INSERT INTO imgtbl VALUES('"+encodedImageString+"');");
Cursor c= myDb.rawQuery("SELECT * FROM imgtbl", null);
c.moveToFirst();
String img=c.getString(0);
byte[] byarray = Base64.decode(img, Base64.DEFAULT);
Bitmap bmimg = BitmapFactory.decodeByteArray(byarray, 0,
byarray.length);
ImageView iv=(ImageView)findViewById(R.id.img2);
ImageView iv1=(ImageView)findViewById(R.id.img3);
iv.setImageBitmap(bmimg);
iv1.setImageBitmap(bmimg);
Code stuff for convert from Bitmap to String Base64
Bitmap thumbnail = extras.getParcelable("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, baos);
thumbnail.recycle();
byte[] b = baos.toByteArray();
String attachment = Base64.encodeToString(b, Base64.DEFAULT);
Code stuff for convert from String Base64 to Bitmap
byte[] encodeByte = Base64.decode(strBase64, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
imageView.setImageBitmap(bitmap);
but i get bitmap = null;
I also refer Base64 to Bitmap to display in ImageView
Thanks in advance.
// convert Bitmap to String
public static String BitMapToString(Bitmap bitmap) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] arr = baos.toByteArray();
imageData = Base64.encodeToString(arr, Base64.DEFAULT);
return imageData;
}
// Convert String to Bitmap
public static Bitmap StringToBitMap(String image) {
try {
byte[] encodeByte = Base64.decode(image, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,
encodeByte.length);
return bitmap;
} catch (Exception e) {
e.getMessage();
return null;
}
}
You are calling thumbnail.recycle(); after loading bitmap,, either remove it or call before loading bitmap
Hi guys I wanted to ask you one thing, I have a chat that transfers strings and I can even attach of JPEG images before sending them to convert it into a string and then decode in BITMAP just that when I decode it crashes the app. I wanted to know if it is the right code to decode it.
NOME = (TextView) row.findViewById(R.id.comment);
NOME.setText(coment.comment);
String a = NOME.getText().toString();
if(a.length() > 1024 )
{
byte[] image = Base64.decode(a, 0);
int lung = a.length();
Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, lung);
Image = (ImageView) row.findViewById(R.id.image);
Image.setImageBitmap(bitmap);
}
The code looks fine, if I had to guess I would say you're getting the Out of Memory error, which is very common when loading images. Check out
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
for some best practices when loading images.
The method for Encoding an Image to String Base64 :
public static String encodeToString() {
String imageString = null;
try {
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
imageString = Base64.encodeToString(b, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
return imageString;
}
The method for Decoding String Base64 to Image :
public static void decodeToImage(String imageString) {
try {
byte[] imageByte = Base64.decode(imageString, Base64.DEFAULT);
Bitmap bm = BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length);
image_view.setImageBitmap(bm);
} catch (Exception e) {
e.printStackTrace();
}
}