Java 在SharedReferences中存储图像
试图通过编码将图像存储在SharedReference中,但我对这一点不熟悉,无法理解。我看到了一些与这个问题相关的问题,但这些问题并不清楚。有人能帮我在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
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();
}
}