Image Kotlin:将图像保存到数据库

Image Kotlin:将图像保存到数据库,image,sqlite,kotlin,Image,Sqlite,Kotlin,我正在kotlin中创建用户配置文件, 我想给用户两个选择,从头像或捕获图像 然后将概要文件保存在sqlite数据库中 最好的解决方案是什么 如果您能在代码方面帮助我,我将非常感激我得到了解决方案: 创建数据库类DatabaseHelper.kt: 并从要访问摄像机的位置进行编码: 编辑 DatabaseHelper.kt: 并从要访问摄像机的位置进行编码: 谢谢回复,我可以将照片保存在设备中并将文件名保存在数据库中,还是将其保存在数据库中是最好的解决方案?您将其保存在设备中并将其名称保存在数据

我正在kotlin中创建用户配置文件, 我想给用户两个选择,从头像或捕获图像 然后将概要文件保存在sqlite数据库中

最好的解决方案是什么


如果您能在代码方面帮助我,我将非常感激

我得到了解决方案:

创建数据库类DatabaseHelper.kt:

并从要访问摄像机的位置进行编码:

编辑 DatabaseHelper.kt:

并从要访问摄像机的位置进行编码:


谢谢回复,我可以将照片保存在设备中并将文件名保存在数据库中,还是将其保存在数据库中是最好的解决方案?您将其保存在设备中并将其名称保存在数据库中,我认为这是最好的解决方案。我的回答正是根据您的要求。如果您想将其保存在设备中,并将其名称保存在数据库中,也可以。请参阅我编辑的代码::确定这是我要查找的。。我觉得这很管用,也许要感谢你问的问题其实很好,但是下次试着把你创建的代码包括进去,因为堆栈溢出是一个询问事情是如何工作的地方,而不是给出一个如何制作东西的解决方案
 class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, 1) {

override fun onCreate(db: SQLiteDatabase) {

    db.execSQL("Create Table $TABLE_NAME(ID INTEGER PRIMARY KEY AUTOINCREMENT,Category_img BLOB)")

}

override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME)
    onCreate(db)
}


fun insertData(Category_img: ByteArray): Boolean {
    val db = writableDatabase
    val cv = ContentValues()
    cv.put(CAL_NO1, Category_img)


    val result = db.insert(TABLE_NAME, null, cv)

    return if (result .equals( -1))
        false
    else
        true


}


fun getdata(): ByteArray {
    val db = writableDatabase
    val res = db.rawQuery("select * from " + TABLE_NAME, null)

    if (res.moveToFirst()) {
        do {
            return res.getBlob(0)
        } while (res.moveToNext())
    }
    return byteArrayOf()
}

companion object {
    private val DATABASE_NAME = "user.db"
    private val TABLE_NAME = "tbl_user"
    private val CAL_NO1 = "Category_img"
}

}
 class MainActivity : AppCompatActivity() {
  var dbSq: DatabaseHelper= DatabaseHelper(this);



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)



    val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(cameraIntent, 101)


}

public override fun onActivityResult(requestcode: Int, resultcode: Int, intent: Intent) {
    super.onActivityResult(requestcode, resultcode, intent)
    if (resultcode == Activity.RESULT_OK) {
        if (requestcode == 101) {


            val photo = intent.extras!!.get("data") as Bitmap
            val stream = ByteArrayOutputStream()
            photo.compress(Bitmap.CompressFormat.PNG, 100, stream)
            val byteArray = stream.toByteArray()

            Log.d("check",dbSq.insertData(byteArray).toString().plus(" "));

        }
    }
}
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, 1) {

override fun onCreate(db: SQLiteDatabase) {

    db.execSQL("Create Table $TABLE_NAME(ID INTEGER PRIMARY KEY AUTOINCREMENT,Category_img Text)")

}

override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME)
    onCreate(db)
}


fun insertData(Category_img: String): Boolean {
    val db = writableDatabase
    val cv = ContentValues()
    cv.put(CAL_NO1, Category_img)


    val result = db.insert(TABLE_NAME, null, cv)

    return if (result .equals( -1))
        false
    else
        true


}




companion object {
    private val DATABASE_NAME = "user.db"
    private val TABLE_NAME = "tbl_user"
    private val CAL_NO1 = "Category_img"
}

}
class MainActivity : AppCompatActivity() {

var dbSq: DatabaseHelper= DatabaseHelper(this);

internal var output: File? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)



    val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)

    val dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

    val date = Date()
    output = File(dir, "CheckImage " + date.toString()+".jpeg")

    startActivityForResult(cameraIntent, 101)


}

public override fun onActivityResult(requestcode: Int, resultcode: Int, intent: Intent) {
    super.onActivityResult(requestcode, resultcode, intent)
    if (resultcode == Activity.RESULT_OK) {
        if (requestcode == 101) {





            Log.d("check",dbSq.insertData(output!!.absolutePath).toString().plus(" "));

        }
    }
}
}