Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/41: Рейтинг темы: голосов - 41, средняя оценка - 4.66
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30

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

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

Студворк — интернет-сервис помощи студентам
Ребят помогите пожалуйста !
Суть такова есть 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2013, 11:53
Ответы с готовыми решениями:

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

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

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

19
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 15:35
смотрите раз Загрузка картинки на сервер
смотрите два Функция для загрузки файла на сервер
смотрите три http://android-er.blogspot.ru/... ld-in.html
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 16:29  [ТС]
Да разобрался как сделать, но есть одно но это ссылка на фото, а как мне запихнуть это изображение в базу данных
Вот код моей реализации
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
отправляете пост запрос серверу ( в теле которого содержится фотка), а на сервере (например с помощью php) сохраняешь фотку в бд
т.к. нормально настроенный сервер не должен позволять ковыряться в бд из вне
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 16:35  [ТС]
У меня база данных локальная (находитса на устройстве)
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 16:35
о..,тогда не знаю
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 16:37  [ТС]
А можешь обьяснить про облачную базу данных и как её сделать. Если можно в личку
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.07.2013, 16:38
не, про облачную не могу) не работал с такими
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 18:46  [ТС]
И ещё один момент в моём классе работой с обрезкой 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
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  [ТС]
Я извиняюсь, Вы бы не могли прокоментировать
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.07.2013, 01:54
битмап превращаем в массив байт и записываем в базу методом insert.
0
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
26.07.2013, 01:57  [ТС]
Накавырял вот код

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2013, 02:58
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru