Create Database with ready Data - android

I want store my Images in Database. I know How create this database, but How I can insert Images in it?
I wanted save them in Resources and then add in database, but then I can;t delete them.
I want hold Images in android app, insert them in database and delete from holded place. How I can do it.
Thanks.

You can do this by converting your 'image bitmap' to 'byte array string',
Bitmap bitmap = YOUR_BITMAP;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
byte[] byteArray = outStream.toByteArray();
String imageString=new String(byteArray);
You can save this imageString to DB.
While retrieving you can do the following,
byte[] byteArray = imageString.getBytes();
Bitmap bitmap = BitmapFactory.decodeByteArray( byteArray, 0, byteArray.length);
I hope it will help you.

Related

Why is my BitmapFactory.decodeByteArray returning null?

I am trying to convert an image stored in Database in Base64 format, to a Bitmap to be used in an Imageview.
So, I store it in SQLite this way:
Bitmap imageBitmap = (Bitmap) extras.get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap fotoGrande=(Bitmap) extras.get("data");
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
//I am adding some data to EXIF here, add to an static ArrayList<Bitmap> in other class and I store it this way:
int bytes=listaFotos.get(i).getFoto().getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes);
listaFotos.get(i).getFoto().copyPixelsToBuffer(buffer);
values.put("foto", Base64.encodeToString(buffer.array(), Base64.DEFAULT));
Later, i need to get that image to fit it in an ImageView:
String foto = csr2.getString(0);//csr2 is a cursor
byte[] arrayFoto = Base64.decode(foto, Base64.DEFAULT);//This is not null
Bitmap fotoBitmap = BitmapFactory.decodeByteArray(arrayFoto, 0, arrayFoto.length);//This is null
I know there are tons of questions about this. I searched, but no answer fix my problem.
Why is my BitmapFactory.decodeByteArray returning null? What I am doing wrong? Any help?
Thank you.
Turned out to be a database issue. SQLite gives you a cursor of 1MB MAX size. I was getting the bytes from database, with a 1MB cursor, the pic was not sent properly.
To fix it, I stored the path to the photo in database instead of the bytes.
firstly image is convert in Bitmap to String like this
ByteArrayOutputStream stream = new ByteArrayOutputStream();
camera.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte imageInByte[] = stream.toByteArray();
String encodedImage = Base64.encodeToString(imageInByte, Base64.DEFAULT);
where camera is a Bitmap.
and store the String encodedImage in database
And getImage string like this
byte[] b = Base64.decode(encodedImage , Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);

Android - converting File or Byte array into a Blob

I've been searching a lot but i couldn't find an answer for this simple question.
I would like to implement one of the following functions:
public Blob getBlob(Byte[] imageByteArray){
}
public Blob getBlob(File imageFile){
}
please note that these functions are being called from the android client.
thanks!
//you bitmap image first get
Bitmap bitmap = BitmapFactory.decodeFile("/path/images/image.jpg");
//take on bytearrayoutputStream to convert into blolb so here is you blob
ByteArrayOutputStream blob = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 "ignore png", blob);
byte[] bitmapdata = blob.toByteArray();

Save image in SQLite database getting from the webservice

I'm working on android app in which i parse the data from the webservice and then store it in the database. here i also want to store the image in the database and retrive back in the next activity.
I'm using this code for inserting the image in database.
Bitmap yourSelectedImage;
ByteArrayOutputStream stream;
byte[] byteArray;
this is in the for loop
{
yourSelectedImage = BitmapFactory.decodeFile(SingleImageURL[i]);
stream = new ByteArrayOutputStream();
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100,
stream);
byteArray = stream.toByteArray();
database.insertDetail(ID[i],byteArray[i]);
}
Here SingleImageURL have the image url that is coming from the webservice.
when i'm run the code it will give error nullPointerException in this line
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100,
stream);
please tell me where i'm going wrong. and how to do this.
Load your Bitmap yourSelectedImage using this link. and then save it to database by converting it to byte[]
You are decoding a file, which actually is a URL. So ur yourSelectedImage is null. And when you try to compress it using
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
you get NullPointerException

i want to save image in sql lite with name and status message and also retrieve it

i want to save image in sql lite with name and status message and also retrieve it.I want to save the image form the imageview which i get from the gallery and also retrieve it image view.I dont know how i save image in database
Insert an image into SQLite database, you need to use BLOB type
See this link :
http://tttrung43.wordpress.com/2012/04/12/store-image-in-sqlite-database/
http://xjaphx.wordpress.com/2011/06/25/insert-image-to-database/
Convert image to Base64 String and save in database table with columns such as img_name, status, img
Checkout Base64 class in android
public static String convertImageToBase64(Bitmap img)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
img.compress(Bitmap.CompressFormat.JPEG, 90, baos);
byte[] byteArrayImage = baos.toByteArray();
return Base64.encodeToString(byteArrayImage, Base64.DEFAULT);
}
public static Bitmap convertBase64ToImage(String base64)
{
byte[] byteArray = Base64.decode(base64, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}
please refer below links for sqlite
http://www.vogella.com/articles/AndroidSQLite/article.html
http://developer.android.com/reference/android/database/sqlite/package-summary.html

Send image to server through httpmultipart

I am making an android app in which i am sending images from gallery to server through xml..Any type of help will be appreciated... hanks
This is how I handle it in my application:
// bitmap is your Bitmap object
ByteArrayOutputStream stream = new ByteArrayOutputStream();
// The next line should be adjust to use the format and compression you want.
bitmap.compress(CompressFormat.PNG, 0, stream);
byte[] byteArr = stream.toByteArray();
// The next line would be where you write the byte array to your xml structure:
myXml += Base64.encodeBase64String( byteArr );
In my application, the byte[] gets saved to the db as a blob prior to the xml structure being created. So this code isn't exactly what I'm doing. But it should give you the idea.

Categories

Resources