0

I just try to get the image from sd card and url and store it into SQLITE database as blob type. I really confused with logic how to do anyone known please help me. Thanks in advance.

Here is my code for retrieve image from the drawable folder in asset.

 public class MainActivity extends Activity implements OnClickListener{

    private ImageView imageview=null;
    private Button btninsert=null;
    private Button btnretrive=null;
    private MyDataBase mdb=null;
    private SQLiteDatabase db=null;
    private Cursor c=null;
    private byte[] img=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);

        btninsert=(Button)findViewById(R.id.button_insert);
        btnretrive= (Button)findViewById(R.id.button_retrieve);
        imageview= (ImageView)findViewById(R.id.imageView_image);
        imageview.setImageResource(0);
        btninsert.setOnClickListener(this);
        btnretrive.setOnClickListener(this);
        mdb=new MyDataBase(getApplicationContext(), DATABASE_NAME,null, DATABASE_VERSION);


        Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        b.compress(Bitmap.CompressFormat.PNG, 100, bos);
        img=bos.toByteArray();
        db=mdb.getWritableDatabase();
    }

    @Override
    public void onClick(View arg0) {

        if(btninsert==arg0)
        {
            ContentValues cv=new ContentValues();
            cv.put("image", img);
            db.insert("tableimage", null, cv);
            Toast.makeText(this, "inserted successfully", Toast.LENGTH_SHORT).show();
        }
        else if(btnretrive==arg0)
        {
                String[] col={"image"};
                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);

                 imageview.setImageBitmap(b1);
                 Toast.makeText(this, "Retrive successfully", Toast.LENGTH_SHORT).show();
            }
        }

}
Zankhna
  • 4,570
  • 9
  • 62
  • 103

3 Answers3

0
private void saveToDB() {
        SQLiteDatabase myDb;
        String MySQL;
        byte[] byteImage1 = null;
        byte[] byteImage2 = null;
        MySQL = "create table emp1(_id INTEGER primary key autoincrement, sample TEXT not null, audio BLOB);";
        myDb = openOrCreateDatabase("Blob List", Context.MODE_PRIVATE, null);
        myDb.execSQL(MySQL);
        String s = myDb.getPath();
        textView.append("\r\n" + s + "\r\n");
        myDb.execSQL("delete from emp1");
        ContentValues newValues = new ContentValues();
        newValues.put("sample", "HI Hello");

        try {
            // FileInputStream instream = new
            // FileInputStream("/sdcard/TestRecordingDasa1/Record1975243059.amr");
            // BufferedInputStream bif = new BufferedInputStream(instream);
            // byteImage1 = new byte[bif.available()];
            // bif.read(byteImage1);

            InputStream is = new FileInputStream("/sdcard/TestRecordingDasa1/YOUR FILE NAME");
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int bytesRead;
            while ((bytesRead = is.read(b)) != -1) {
                bos.write(b, 0, bytesRead);

            }
            byte[] bytes = bos.toByteArray();

            textView.append("\r\n" + bytes.length + "\r\n");
            newValues.put("audio", bytes);

            long ret = myDb.insert("emp1", null, newValues);
            if (ret < 0)
                textView.append("\r\n!!! Error add blob failed!!!\r\n");
        } catch (IOException e) {
            textView.append("\r\n!!! Error: " + e + "!!!\r\n");
        }

        Cursor cur = myDb.query("emp1", null, null, null, null, null, null);
        cur.moveToFirst();
        while (cur.isAfterLast() == false) {
            textView.append("\r\n" + cur.getString(1) + "\r\n");
            cur.moveToNext();
        }
        // /////Read data from blob field////////////////////
        cur.moveToFirst();
        byteImage2 = cur.getBlob(cur.getColumnIndex("audio"));
        // bmImage.setImageBitmap(BitmapFactory.decodeByteArray(byteImage2, 0,
        // byteImage2.length));
        textView.append("\r\n" + byteImage2.length + "\r\n");

        cur.close();

        myDb.close();

    }
Pratik Dasa
  • 7,439
  • 4
  • 30
  • 44
0

Try this code to retrive image from sdcard.

String path = Environment.getExternalStorageDirectory()
                .getAbsolutePath() + "/Foldername";
File[] pictures = file.listFiles();

use this pictures array to store in db.

Zankhna
  • 4,570
  • 9
  • 62
  • 103
0

This line show that getting the bitmap from drawable

Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

Here you can get the bimap from sd card of a particular image photo.png

File f = new File("/mnt/sdcard/photo.png");
Bitmap b = BitmapFactory.decodeFile(f.getAbsolutePath());
Sunil Kumar
  • 7,086
  • 4
  • 32
  • 50