In this article we go through with android sample code in which we first get image from DB and set it into ImageView on activity create.
Then we click from camera or select image from gallery and set it into ImageView on activity result.
In last, we save image into sqlite DB table having blob column.
Sample Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.user.dailybook.ProfileActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/img"
android:src="@drawable/noimage"
android:layout_gravity="center_horizontal"
android:onClick="CatchImage"
android:clickable="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save"
android:textSize="20sp"
android:textColor="#fff"
android:textStyle="bold"
android:background="@color/colorPrimaryDark"
android:id="@+id/btn_save"
android:textAllCaps="false"
android:layout_marginRight="5dp"
android:layout_gravity="right"
/>
</LinearLayout>
</RelativeLayout>
//Database Handler Java Class
public class DatabaseHandler extends SQLiteOpenHelper {
public static String
Globalid="";
SQLiteDatabase
sqLiteDatabase=getWritableDatabase();
private static final String
dbname="mydatabase.db";
private static final int
dbver=1;
public
DatabaseHandler(Context context) {
super(context, dbname,
null, dbver);
}
@Override
public void
onCreate(SQLiteDatabase db) {
String
CreateTableQry="Create Table if not exists UBAG(" +
"id integer
primary key autoincrement not null, " +
"pic blob
)";
db.execSQL(CreateTableQry);
Log.e("","UBAG
Table Created...");
}
public long
insert(ContentValues values,String TableName){
return (long)
sqLiteDatabase.insert(TableName,null,values);
}
public Cursor getData(String query){
Cursor cursor=null;
try {
cursor =
sqLiteDatabase.rawQuery(query, null);
}catch (Exception e){
Log.e("GD","DB Helper Found Error " + query);
}
cursor.moveToFirst();
return cursor;
}
}
//Java Class for Activity
public class ProfileActivity extends AppCompatActivity {
ImageView imgvu;
DatabaseHandler dbhandler;
Bitmap help1;
Uri file;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
dbhandler = new
DatabaseHandler(this);
imgvu = (ImageView)
findViewById(R.id.img);
save = (Button)
findViewById(R.id.btn_save);
Cursor cursor=null;
//On activity creation you can set image into imageview from db
String query="select
* from ubag where id='"+id+"'";
cursor=dbhandler.getData(query);
if (cursor!=null) {
if (cursor.getCount()
> 0) {
while
(!cursor.isAfterLast()) {
try {
byte[]
image = cursor.getBlob(cursor.getColumnIndex("pic"));
Bitmap
bmp = BitmapFactory.decodeByteArray(image, 0, image.length);
imgvu.setImageBitmap(bmp);
}catch
(Exception e){
e.printStackTrace();
}
cursor.moveToNext();
}
}
}
save.setOnClickListener(new View.OnClickListener() {
@Override
public void
onClick(View v) {
ContentValues
cvs= new ContentValues();
Bitmap bitmap
= ((BitmapDrawable)imgvu.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100,baos);
byte [] img =
baos.toByteArray();
cvs.put("pic",img);
long ins =0;
ins =
dbhandler.insert(cvs,"UBAG","id='"+id+"'");
if(ins==0){
Toast.makeText(ProfileActivity.this,"Data Not
Saved",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(ProfileActivity.this,"Data Updated",Toast.LENGTH_SHORT).show();
}
}
}
});
public void CatchImage(View v){
// use one method at a time for image saving and comment other one
camerOpenForPic(); // Method use to save image from camera click
// getPicFromGallery(); //
Method use to save image from gallery
}
@TargetApi(Build.VERSION_CODES.M)
private boolean
checkPermission(){
if
(ContextCompat.checkSelfPermission(this
,
Manifest.permission.WRITE_EXTERNAL_STORAGE) + ContextCompat
.checkSelfPermission(this, Manifest.permission.CAMERA)
!=
PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE
},33);
return false;
}else {
return true;
}
}
@Override
public void
onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
if (requestCode==33){
if (grantResults.length>0){
boolean
camerpermission = grantResults[1] == PackageManager.PERMISSION_GRANTED;
boolean
readexternalfile = grantResults[0] == PackageManager.PERMISSION_GRANTED;
boolean writeExternalfile
= grantResults[2] == PackageManager.PERMISSION_GRANTED;
if
(camerpermission && readexternalfile && writeExternalfile){
camerOpenForPic();
}else{
Toast.makeText(this,"Unable to collect
pic",Toast.LENGTH_LONG).show();
}
}
}
}
private void
camerOpenForPic() {
if (checkPermission()){
Intent intent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,1);
}
}
public void
getPicFromGallery(){
if (checkPermission()){
Intent intent=new
Intent(Intent.ACTION_PICK,MediaStore.Images.Media.INTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra("crop","true");
intent.putExtra("scale",true);
intent.putExtra("outputX",256);
intent.putExtra("outputY",256);
intent.putExtra("aspectX",1);
intent.putExtra("aspectY",1);
intent.putExtra("return-data",true);
//startActivityForResult(Intent.createChooser(intent,"Select
Picture"),113);
startActivityForResult(intent,113);
}
}
@Override
protected void
onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==1){
if (resultCode==
Activity.RESULT_OK){
try {
Bitmap
bitmap= (Bitmap) data.getExtras().get("data");
imgvu.setImageBitmap(bitmap);
}catch (Exception
e){
e.printStackTrace();
}
}
}else if
(requestCode==113){
if
(resultCode==Activity.RESULT_OK){
try {
final Bundle
extras = data.getExtras();
help1 =
extras.getParcelable("data");
imgvu.setImageBitmap(help1);
}catch (Exception
e){
e.printStackTrace();
}
}
}
}
}