如何使用 SQLite 从图库中选择图片并另存为背景 ImageView

How do choose picture from gallery and save as background ImageView, using SQLite

我是 Android 编程新手。我想知道如何从图库中选择图像并将其作为 ImageView 背景。 我编写了从图库中选择的代码并将其设为 ImageView 背景,但每次离开应用程序时图像都会消失。 我肯定是存进了数据库,但是我对它了解不多

如果有人能帮助我.. 谢谢

我的Java文件

    ImageView btn1, btn2;
    Uri photoPath;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        btn1 = (ImageView) findViewById(R.id.imageView1);


        btn1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Altere o botão"), 1);
            }
        });

}

    public void onActivityResult(int reqCode, int resCode, Intent data){

        if(resCode == RESULT_OK){
            if(reqCode == 1){
                btn1.setImageURI(data.getData());
            }
        }
    }

我的XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context="com.example.camera.MainActivity" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher" 
    />

</LinearLayout>

您必须使用将图像转换为字节,然后使用 sqlLite 数据库连接,您可以存储和检索图像形式的数据库。 为此请参考这个例子: Example to store images in SQLLite database in android

好的。看起来您用于获取图像并将其设置为 Imageview 的代码工作正常。 我的建议是将图像保存在本地文件夹中,而不是 Sqlite 数据库中,因为它会使数据库变得很重。但是一定要在数据库中保存图片的Uri或者路径。

使用下面的代码将图片保存到本地文件夹

private void createDirectoryAndSaveFile(Bitmap imageToSave, String fileName) {

File direct = new File(Environment.getExternalStorageDirectory() + "/DirName");

if (!direct.exists()) {
    File wallpaperDirectory = new File("/sdcard/DirName/");
    wallpaperDirectory.mkdirs();
}

File file = new File(new File("/sdcard/DirName/"), fileName);
if (file.exists()) {
    file.delete();
}
try {
    FileOutputStream out = new FileOutputStream(file);
    imageToSave.compress(Bitmap.CompressFormat.JPEG, 100, out);
    out.flush();
    out.close();
} catch (Exception e) {
    e.printStackTrace();
}

}

这是一个简单的 Sqlite 数据库教程 Sqlite Database tutorial