Thursday, March 31, 2016

Select Image from Gallery , Upload & Retrieve @ with SQLite Data Base in Android

" Jai Saraswati Maa"
Hi .... Dear All ....  Today I am uploading a superb example of Image with SQLite Database
In this example you can select image from your Gallery, Can also upload into Data Base and Retrieve from DB.
I am using Android Studio 1.5.1
Minimun SDK API 19
Target SDK API 23
Please Like us & put your valuable suggestions in comment box

@@@@ please add read write permission in manifest file like

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

A. Main Layout



B. 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="com.exam.ravi.sqlimagemyex1.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>

C. MainActivity.java

package com.exam.ravi.sqlimagemyex1;

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.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;

public class MainActivity extends AppCompatActivity {
    ImageView imageView,imageview2;
    String realPath=null;
    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_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(intent,0);
    }

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(resultCode== Activity.RESULT_OK && data !=null)
        {
           realPath = RealPathUtil.getRealPath(this,data.getData());
        }
        setMyImage(realPath);
    }
    public void setMyImage(String realP)
    {
        Uri uriFromPath = Uri.fromFile(new File(realP));
        try        {
            bitmap = BitmapFactory.decodeStream(getContentResolver().
                                          openInputStream(uriFromPath));
        } catch (FileNotFoundException e) {
            Toast.makeText(this,"Exception Generated",Toast.LENGTH_LONG).show();
        }
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG,100,bos);
        img = bos.toByteArray();
        imageView.setImageBitmap(bitmap);
    }
   @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();
    }
}

D. RealPathUtil.java   
package com.exam.ravi.sqlimagemyex1;

import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.provider.MediaStore;

public class RealPathUtil {
    public static String getRealPath(Context context,Uri uri)
    {
        String filePath="";
        String wholeID = DocumentsContract.getDocumentId(uri);
         String id = wholeID.split(":")[1];
        String[] column = {MediaStore.Images.Media.DATA};
        String sel = MediaStore.Images.Media._ID + "=?";

        Cursor cursor = context.getContentResolver().query
                      (MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                       column, sel, new String[]{id}, null);

        int columnIndex = cursor.getColumnIndex(column[0]);

        if (cursor.moveToFirst()) {
            filePath = cursor.getString(columnIndex);
        }
        cursor.close();
        return filePath;
    }
}

E. MyDataBase.java

package com.exam.ravi.sqlimagemyex1;

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

    }

}

4 comments:

  1. One change please follow us for latest updates
    androidclue4u.blogspot.in

    ReplyDelete
  2. http://androidclue4u.blogspot.in/

    Please visit my another Blog

    ReplyDelete
  3. how to extract contacts from contact lsit and add contact in emergency list ..plz solve

    ReplyDelete