Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在安装或运行期间,如何在sqlite数据库中(静态)存储映像?_Java_Android_Image_Sqlite - Fatal编程技术网

Java 在安装或运行期间,如何在sqlite数据库中(静态)存储映像?

Java 在安装或运行期间,如何在sqlite数据库中(静态)存储映像?,java,android,image,sqlite,Java,Android,Image,Sqlite,说明: 我正在开发一个裁缝管理应用程序。我为应用程序存储了一些设计(服装)图像。有些图像是静态存储的,有些图像是动态存储的。动态意味着用户还可以通过相机和多媒体资料存储图像。我已经完成了这项任务,但我混淆了另一项任务 问题: 我想在安装期间将图像存储在sqlite数据库中。我希望应用程序只执行此任务一次,而不是每次用户启动应用程序时 这是我的代码: @Override protected void onCreate(Bundle savedInstanceState) {

说明:

我正在开发一个裁缝管理应用程序。我为应用程序存储了一些设计(服装)图像。有些图像是静态存储的,有些图像是动态存储的。动态意味着用户还可以通过相机和多媒体资料存储图像。我已经完成了这项任务,但我混淆了另一项任务

问题:

我想在安装期间将图像存储在sqlite数据库中。我希望应用程序只执行此任务一次,而不是每次用户启动应用程序时

这是我的代码:

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

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kamee_elbow_imagey);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG,0, stream);
        byte[] bytearry=stream.toByteArray();
        db.insertIntoImageTable("elbow",bytearry);
}
此代码重复存储图像。我只想存储一次数据和图像


如何让应用程序只存储一次图像,而不是每次应用程序启动时重复存储?

将图像存储到隐藏文件夹。并将图像的路径插入数据库

private void storeImage() {
    try {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/.imgdir/filename.jpg";
        File file = new File(path);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.kamee_elbow_imagey);
        FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.PNG,100, out);
        out.flush();
        out.close();
        db.insertImagePathToDB(path);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void getBitmapFromDisk(){
    String path = db.queryImagePath();
    Bitmap bitmap = BitmapFactory.decodeFile(path);
}

假设图像名称是唯一的,然后执行一个简单查询,检查图像名称是否存在于以下行中:-

    public boolean checkImageExists(String imagename) {

        Cursor csr = db.Cursor("yourimagestablename",null,"nameoftheimagenamecolumn=?",new String[]{imagename},null,null,null);
        int rowcount = csr.getCount();
        csr.close();
        return rowcount > 0;
    }
然后你就可以做了

    if(!checkImageExists("elbow")) {
        db.insertIntoImageTable("elbow",bytearry);
    }

您仍然不应该直接在sql中存储图像。这个问题有点令人困惑。如果您想在sqlite中存储一些映像,那么应该只包含sqlite db和应用程序,其中已经包含了映像。也没有什么内在的原因不应该将它们存储在sqlite中——只是它提供给您的实际好处很少甚至没有。为什么?我直接插入了数据,但上面的代码中没有显示数据库代码。图像已添加,但每次添加都是一个图像。