Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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 在SharedReferences中存储图像_Java_Android_Xml_Android Studio_Sharedpreferences - Fatal编程技术网

Java 在SharedReferences中存储图像

Java 在SharedReferences中存储图像,java,android,xml,android-studio,sharedpreferences,Java,Android,Xml,Android Studio,Sharedpreferences,试图通过编码将图像存储在SharedReference中,但我对这一点不熟悉,无法理解。我看到了一些与这个问题相关的问题,但这些问题并不清楚。有人能帮我在SharedReferences中存储路径/图像吗 代码甚至没有编译,因为我在.decodeStream()的inout stream中放置了一个uri,该uri指向图像存储的路径,因此首先您必须使用InputStream读取它 此代码将修复编译错误。作为侧节点,使用edit.apply()而不是edit.commit() 然而,我并不认为在S

试图通过编码将图像存储在SharedReference中,但我对这一点不熟悉,无法理解。我看到了一些与这个问题相关的问题,但这些问题并不清楚。有人能帮我在
SharedReferences
中存储路径/图像吗


代码甚至没有编译,因为我在.decodeStream()

的inout stream中放置了一个uri,该uri指向图像存储的路径,因此首先您必须使用InputStream读取它

此代码将修复编译错误。作为侧节点,使用
edit.apply()
而不是
edit.commit()

然而,我并不认为在SharedReferences中存储图像有什么意义?这不是真的。为什么不在
context.getFilesDir()中保存文件,并在需要时从那里读取?这比编码/解码要好

mHomePage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent, REQUEST_CODE);
        }
    });
    mHomePage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent galleryIntent = new Intent(Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(galleryIntent, RESULT_LOAD);
        }
    });


    return rootView;
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // When an Image is picked
    if (requestCode == RESULT_LOAD && resultCode == RESULT_OK) {
        Uri resultUri = data.getData();
        CropImage.activity(resultUri)
                .start(getActivity());
    }

    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        Uri uri = result.getUri();

        Bitmap realImage = BitmapFactory.decodeStream(uri);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray();

        String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

        SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(getActivity());
        SharedPreferences.Editor edit=shre.edit();
        edit.putString("image_data",encodedImage);
        edit.commit();

    }
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
    try
    {
        InputStream ims = getContentResolver().openInputStream(uri);
        Bitmap realImage = BitmapFactory.decodeStream(uri);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray();

        String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

        SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor edit=shre.edit();
        edit.putString("image_data",encodedImage);
        //edit.commit();
        edit.apply();
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
}