【问题标题】:save image from camera into sqlite将图像从相机保存到 sqlite
【发布时间】:2012-02-07 03:01:31
【问题描述】:

我有一个这样的相机活动:

public void startCamera() 
{
    Log.d("ANDRO_CAMERA", "Starting camera on the phone...");
    String fileName = "testphoto.jpg";
    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, fileName);
    values.put(MediaStore.Images.Media.DESCRIPTION,
            "Image capture by camera");
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
    imageUri = getContentResolver().insert(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
    startActivityForResult(intent, IMAGE_CAPTURE);
}

我应该如何将此图像保存到 SQLite 数据库?


我有这样的代码:

fileName = helper.getKdStore(c) + "_" + System.currentTimeMillis() + ".jpg";
_path = Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera/" + fileName;

在启动相机中:

Cursor c = helper.getById(almagId);
c.moveToFirst();
File file = new File(_path, null);
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, IMAGE_CAPTURE);
System.out.println(file);

Dbhelper helper = new Dbhelper(this);
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("update alfamapp set gambar ='"+file+"' where kdstore='"+helper.getKdStore(c)+"'");
db.close();
helper.close();

System.out.println(db);

我创建方法 public void load() 来显示我的图像:

detGam.setImageDrawable(Drawable.createFromPath(_path));

但我的应用程序无法显示图像。感谢您的帮助。

【问题讨论】:

    标签: android sqlite android-camera


    【解决方案1】:

    将图像保存到 sqlite 是个坏主意,但是如果您还想更进一步,这里有代码

    public static void insertPicture(byte[] data)
    {
    
        SQLiteDatabase db = thisAct.openOrCreateDatabase(ConstantCodes.IMAGE_DATABASE, 2, null);
        ContentValues values = new ContentValues(1);
        values.put("photo", data);
        db.insert("photos", null, values);
        db.close();
    
    } 
    

    【讨论】:

    • 我有这样的数据库图像public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE image (_id integer primary key AUTOINCREMENT,kdstore text,image1 BLOB,image2 BLOB,image3 BLOB)");}我该怎么办??thx
    • 你的意思是你在一行中存储了 3 张图片?
    • 是的,完全正确!!我想在一行中保存 3 张图片。我该怎么办??
    • 我在SQLiteDatabase db = **thisAct**.openOrCreateDatabase(**ConstantCodes**.IMAGE_DATABASE, 2, null); 中有错误我应该创建类ConstantCodes ??对不起,我是 android 开发者的初学者 :)
    • 如果我的数据库是名称,您可以使用您的数据库名称,如“photo.db”而不是 ConstantCodes.IMAGE_DATABASE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多