Save image in SQLite database getting from the webservice - android

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

Related

Create Database with ready Data

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.

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);

ImageView data to Byte Array Android

I am trying to use parse.com database to upload file and syntax needs me to use byte []. I will write syntax below:
byte[] data = "Working at Parse is great!".getBytes();
ParseFile file = new ParseFile("resume.png", data);
file.saveInBackground();
ParseObject jobApplication = new ParseObject("JobApplication");
jobApplication.put("applicantResumeFile", file);
jobApplication.saveInBackground();
I need to know how to use the first instruction to get ImageView Data in byte[] and upload it.
#wisejoy I have an implementation but I think its a little bit different... hope it can help you... cheers!!
myBitmap = (Bitmap) data.getExtras().get("data");//here I set an image taken by the camera
imageView.setImageBitmap(myBitmap);//I set it into an image view
imageView.buildDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();//and then I convert that image into a byteArray
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
encondedImage = android.util.Base64.encodeToString(b, Base64.DEFAULT);
Log.e(TAG, "" + txt);

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();

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