In this an article today learn how to upload image in sqlite database in android. Sqlite using a storage data. Then save image
blob formatting. Follow the method image
upload and retrieve for sqlite database.
Select Image method:
{
Intent intent = new
Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent,0);
}
Upload Image Method:
public void
uploadImage(View view)
{
db=mdb.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("image", img);
db.insert("tableimage", null,
cv);
imageView.setAlpha(0);
Toast.makeText(this, "inserted
successfully", Toast.LENGTH_SHORT).show();
}
public void retImage(View view)
{
String[] col={"image"};
db=mdb.getReadableDatabase();
c=db.query("tableimage", col,
null, null, null, null, null);
if(c!=null){
c.moveToFirst();
do{
img=c.getBlob(c.getColumnIndex("image"));
}while(c.moveToNext());
}
Bitmap
b1=BitmapFactory.decodeByteArray(img, 0, img.length);
imageview2.setImageBitmap(b1);
Toast.makeText(this, "Retrive
successfully", Toast.LENGTH_SHORT).show();
}
add permission on AndroidManifest.xml file
Follow the
full source code
1.MainActivity.java:
package com.akash.sqliteiamge;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
ImageView imageView,imageview2;
Bitmap bitmap = null;
byte img[];
private MyDataBase mdb=null;
private SQLiteDatabase db=null;
private Cursor c=null;
private static final String DATABASE_NAME = "ImageDb.db";
public static final int DATABASE_VERSION = 1;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
imageview2 = (ImageView) findViewById(R.id.imageView2);
mdb=new MyDataBase(getApplicationContext(), DATABASE_NAME,null,
DATABASE_VERSION);
}
public void selectImage(View view)
{
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent,0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode== Activity.RESULT_OK && data !=null)
{
Uri selectedImage = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),
selectedImage);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,bos);
img = bos.toByteArray();
imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@SuppressWarnings("deprecation")
public void uploadImage(View view)
{
db=mdb.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("image", img);
db.insert("tableimage", null, cv);
imageView.setAlpha(0);
Toast.makeText(this, "inserted successfully", Toast.LENGTH_SHORT).show();
}
public void retImage(View view)
{
String[] col={"image"};
db=mdb.getReadableDatabase();
c=db.query("tableimage", col, null, null, null, null, null);
if(c!=null){
c.moveToFirst();
do{
img=c.getBlob(c.getColumnIndex("image"));
}while(c.moveToNext());
}
Bitmap b1=BitmapFactory.decodeByteArray(img, 0, img.length);
imageview2.setImageBitmap(b1);
Toast.makeText(this, "Retrive successfully", Toast.LENGTH_SHORT).show();
}
}
2.MyDataBase.java:
package com.akash.sqliteiamge;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDataBase extends SQLiteOpenHelper {
public MyDataBase(Context context, String dbname,
SQLiteDatabase.CursorFactory factory, int dbversion) {
super(context, dbname, factory, dbversion);
}
@Override public void onCreate(SQLiteDatabase db) {
db.execSQL("create table tableimage(image blob);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
3.activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Image"
android:id="@+id/btnSelect"
android:onClick="selectImage"
android:layout_alignTop="@+id/btnUpload"
android:layout_alignParentStart="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="150dp"
android:id="@+id/imageView"
android:src="@mipmap/ic_launcher"
android:layout_below="@+id/btnUpload"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Upload Image"
android:id="@+id/btnUpload"
android:onClick="uploadImage"
android:layout_marginTop="0dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Retrieve Image"
android:id="@+id/button"
android:onClick="retImage"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true"
android:layout_marginTop="67dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:src="@mipmap/ic_launcher"
android:layout_alignParentBottom="true"
android:layout_alignStart="@+id/imageView"
android:layout_marginTop="300dp" />
</RelativeLayout>
</ScrollView>
No comments:
Post a Comment