4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
1

Сохранение фото в базу данных

25.07.2013, 11:53. Показов 7188. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят помогите пожалуйста !
Суть такова есть Activity в ней EditText, ImageButton, Button и база данных. Как в ImageButton загонять фото с галереи сделать, а вот как её сохранить в базу данных и загрузить от туда не знаю. За ранее спасибо

Так загружаю фото в ImageButton

//====== Добавление фото ребёнка
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public void FotoProfil_Click (View v){
 
        Image_profil = (ImageButton) findViewById(R.id.Image_profil_id);
        Intent i = new Intent(Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        i.putExtra("crop", "true");
        i.putExtra("aspectX", 1);
        i.putExtra("aspectY", 1);
        i.putExtra("outputX", 150);// ---- размер фото на кнопке
        i.putExtra("outputY", 150);// ---- размер фото на кнопке
        i.putExtra("scale", true);
        i.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        i.putExtra("noFaceDetection", false); 
        i.putExtra("return-data", false);
        i.putExtra(MediaStore.EXTRA_OUTPUT, ContactPhotoHelper.getTempUri());
        startActivityForResult(i, REQ_CODE_PICK_IMAGE);
        
    
    } 
    
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
 
        switch (requestCode) {
        case REQ_CODE_PICK_IMAGE:
            if (resultCode == RESULT_OK) {
                contactPhoto = BitmapFactory.decodeFile(ContactPhotoHelper.getTempFile()
                        .getAbsolutePath());
                Image_profil.setImageBitmap(contactPhoto);
            }
        }
    }
***********************************************
Клас для работы с фото

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package syn.child;
 
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
 
 
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.util.Log;
 
public class ContactPhotoHelper {
 
    private static final String TEMP_PHOTO_FILE = "tempPhoto.jpg";
 
    public static Uri getTempUri() {
        return Uri.fromFile(getTempFile());
    }
 
    public static File getTempFile() {
        if (isSDCARDMounted()) {
 
            File f = new File(Environment.getExternalStorageDirectory(), TEMP_PHOTO_FILE);
            try {
                f.createNewFile();
            } catch (IOException e) {
                Log.e("ContactPhotoHelper.getTempFile", "Error while saving temp photo: " + e.getMessage());
            }
            return f;
        } else {
            return null;
        }
    }
 
    public static boolean isSDCARDMounted() {
        String status = Environment.getExternalStorageState();
 
        if (status.equals(Environment.MEDIA_MOUNTED))
            return true;
        return false;
    }
 
    public static void setContactPhoto(ContentResolver c, byte[] bytes, long personId) {
        int photoRow = -1;
        String where = Data.RAW_CONTACT_ID + " = " + personId + " AND "
                + Data.MIMETYPE + "=='" + Photo.CONTENT_ITEM_TYPE
                + "'";
        Cursor cursor = c.query(Data.CONTENT_URI, null, where, null, null);
        int idIdx = cursor.getColumnIndexOrThrow(Data._ID);
        if (cursor.moveToFirst()) {
            photoRow = cursor.getInt(idIdx);
        }
        cursor.close();
 
        ContentValues values = new ContentValues();
        values.put(Data.RAW_CONTACT_ID, personId);
        values.put(Data.IS_SUPER_PRIMARY, 1);
        values.put(Photo.PHOTO, bytes);
        values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);
 
        if (photoRow >= 0) {
            c.update(Data.CONTENT_URI, values, Data._ID + " = " + photoRow, null);
        } else {
            c.insert(Data.CONTENT_URI, values);
        }
    }
 
    public static Bitmap loadContactPhoto(ContentResolver cr, long id, Context context) {
        Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
        InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
        if (input == null) {
            Resources res = context.getResources();
            return BitmapFactory.decodeResource(res, R.drawable.foto_profil);
        }
        return BitmapFactory.decodeStream(input);
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2013, 11:53
Ответы с готовыми решениями:

Как занести фото в базу данных и вывести их на страницу
Здравствуйте помогите пожалуйста вот мне нужна что бы пользователь когда заходит на свою страницу...

Сохранение данных из datagridview в базу данных под MS sql server 2012
Доброго времени суток. Делаю курсовую, и до этого момента думал, что самое сложное создать...

Сохранение данных из Edit в базу данных (не Access)
Помогите пожалуйста сохранить данные из Edit-а в базу данных. У меня есть DBGrid, при нажатие на...

Сохранение данных в базу данных SQL Server
Есть база данных LocalDB с одной таблицей Notice. Так же есть две формы: одна с textBox и...

19
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 15:35 2
смотрите раз Загрузка картинки на сервер
смотрите два Функция для загрузки файла на сервер
смотрите три http://android-er.blogspot.ru/... ld-in.html
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 16:29  [ТС] 3
Да разобрался как сделать, но есть одно но это ссылка на фото, а как мне запихнуть это изображение в базу данных
Вот код моей реализации
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent i = new Intent(Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                i.putExtra("crop", "true");
                i.putExtra("aspectX", 1);
                i.putExtra("aspectY", 1);
                i.putExtra("outputX", 150);// ---- размер фото на кнопке
                i.putExtra("outputY", 150);// ---- размер фото на кнопке
                i.putExtra("scale", true);
                i.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
                i.putExtra("noFaceDetection", false); 
                i.putExtra("return-data", false);
                i.putExtra(MediaStore.EXTRA_OUTPUT, ContactPhotoHelper.getTempUri());
                startActivityForResult(i, REQ_CODE_PICK_IMAGE);
            }});
        
    }
    
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
 
        switch (requestCode) {
        case REQ_CODE_PICK_IMAGE:
            if (resultCode == RESULT_OK) {
               
                textTargetUri.setText(ContactPhotoHelper.getTempFile()
                        .getAbsolutePath());
            }
        }
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 16:32 4
отправляете пост запрос серверу ( в теле которого содержится фотка), а на сервере (например с помощью php) сохраняешь фотку в бд
т.к. нормально настроенный сервер не должен позволять ковыряться в бд из вне
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 16:35  [ТС] 5
У меня база данных локальная (находитса на устройстве)
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 16:35 6
о..,тогда не знаю
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 16:37  [ТС] 7
А можешь обьяснить про облачную базу данных и как её сделать. Если можно в личку
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 16:38 8
не, про облачную не могу) не работал с такими
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 18:46  [ТС] 9
И ещё один момент в моём классе работой с обрезкой ContactPhotoHelper есть строка private static final String TEMP_PHOTO_FILE = "tempPhoto.jpg"; короче проблема как название временной фотки задавать самому, например в EditText другой активности

Добавлено через 1 час 28 минут
Ау люди подскажите как фото сохранить в базе данных
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2013, 21:04 10
Java
1
2
3
4
5
6
7
8
9
Bitmap photo = <Your image>
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, bos);
byte[] bArray = bos.toByteArray();
 
db = YourDBHelper.getInstance(ctx).getWritableDatabase();    
ContentValues values = new ContentValues();         
values.put("image", bArray);            
db.insert(TABLE_NAME , null, values);
Java
1
2
3
4
5
6
7
8
9
10
protected long saveBitmap(SQLiteDatabase database, Bitmap bmp)
{
    int size = bmp.getRowBytes() * bmp.getHeight(); 
    ByteBuffer b = ByteBuffer.allocate(size); bmp.copyPixelsToBuffer(b); 
    byte[] bytes = new byte[size];
    b.get(bytes, 0, bytes.length);
    ContentValues cv=new ContentValues();
    cv.put(CHUNK, bytes);
    this.id= database.insert(TABLE, null, cv);
}
Java
1
2
3
4
5
6
7
8
9
CREATE TABLE " + DB_TABLE + "("+ 
                   KEY_NAME + " TEXT," + 
                   KEY_IMAGE + " BLOB);;
public void addEntry( String name, byte[] image) throws SQLiteException{
    ContentValues cv = new  ContentValues();
    cv.put(KEY_NAME,    name);
    cv.put(KEY_IMAGE,   image);
    database.insert( DB_TABLE, null, cv );
}
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
26.07.2013, 00:32  [ТС] 11
Я извиняюсь, Вы бы не могли прокоментировать
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.07.2013, 01:54 12
битмап превращаем в массив байт и записываем в базу методом insert.
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
26.07.2013, 01:57  [ТС] 13
Накавырял вот код

//******** ЗАПИСЬ **********

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void insertImg(int id , Bitmap img ) {   
 
 
    byte[] data = getBitmapAsByteArray(img); // this is a function
 
    insertStatement_logo.bindLong(1, id);       
    insertStatement_logo.bindBlob(2, data);
 
    insertStatement_logo.executeInsert();
    insertStatement_logo.clearBindings() ;
 
}
 
 public static byte[] getBitmapAsByteArray(Bitmap bitmap) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, outputStream);       
    return outputStream.toByteArray();
}
//******* ЧТЕНИЕ ***********

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public Bitmap getImage(int i){
 
    String qu = "select img  from table where feedid=" + i ;
    Cursor cur = db.rawQuery(qu, null);
 
    if (cur.moveToFirst()){
        byte[] imgByte = cur.getBlob(0);
        cur.close();
        return BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
    }
    if (cur != null && !cur.isClosed()) {
        cur.close();
    }       
 
    return null ;
}

Только не могу понять что такое insertStatement_logo
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.07.2013, 12:24 14
Цитата Сообщение от Sherstyuk_Ya_N Посмотреть сообщение
Только не могу понять что такое insertStatement_logo
SQLiteStatement
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
27.07.2013, 21:10  [ТС] 15
Поясните что это такое
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.07.2013, 22:47 16
http://developer.android.com/r... ement.html
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
28.07.2013, 14:26  [ТС] 17
Всеравно не понятно
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
29.07.2013, 15:37  [ТС] 18
Ау люди ну помогите, уже два дня мучаюсь
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
31.07.2013, 00:45  [ТС] 19
Люди третий день ковыряюсь в гугле подскажите как же это сделать, если не трудно исходничком )))))))
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
02.08.2013, 02:58  [ТС] 20
Накавырял вот ещё что

Java
1
2
3
4
5
6
7
8
9
10
   public void insertPicture(byte[] data)
    {
 
        ContentValues values = new ContentValues();
        values.put("photo", data);
        
        database.insert("Таблица", null, values);
        close();
 
    }
0
02.08.2013, 02:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2013, 02:58
Помогаю со студенческими работами здесь

Кейлогер, сохранение данных и загрузка в базу данных
Здравствуйте, подскажите пожалуйста, как через клиент C# сохранять данные кейлогера, в базу данных,...

Сохранение данных, добавленных в базу данных access
Помогите сделать сохранение добавленных данных в бд, при перезапуске программы Вот код бд: ...

Сохранение в базу данных
Здравствуйте. Подскажите пожалуйста как сделать следующее: Исходные данные: - есть база...

Delphi, ADO- Как вставить и сохранить фото (Jpeg) в базу данных
Ни где не могу найти конкретного ответа : Как всавить и сохранить в базу данных ADO Access фото...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru