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