gpt4 book ai didi

android - java.lang.NullPointerException : uriString when receiving image sd card path 异常

转载 作者:行者123 更新时间:2023-11-29 17:31:37 24 4
gpt4 key购买 nike

这个错误的原因是什么:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.sqlfirst.AddImage}: java.lang.NullPointerException: uriString

错误指向我接收 Intent 的这一行

img.setImageURI(Uri.parse(imagePath ));

我正在尝试通过 Intent 将 SD 卡路径发送到另一个 Activity 并将其转换为图像这是代码:

这里发送图片在sd卡中的路径

public   void openGallery() {

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);

// startActivityForResult(
// Intent.createChooser(intent, "Complete action using"),2);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {

Bundle extras2 = data.getExtras();

filePath = data.getData();
Intent i = new Intent(this,
AddImage.class);
i.putExtra("imagepath", filePath);
startActivity(i);

这里我想接收图像的路径并减小图像的大小。

    String imagePath = getIntent().getStringExtra("imagePath");
ImageView img=(ImageView) findViewById(R.id.imageView);
img.setImageURI(Uri.parse(imagePath ));

Bitmap bitmap = ((BitmapDrawable)img.getDrawable()).getBitmap();
Bitmap out = Bitmap.createScaledBitmap(bitmap, 500, 500, false);
// bitmap is the image
ByteArrayOutputStream stream = new ByteArrayOutputStream();
out.compress(Bitmap.CompressFormat.JPEG, 60, stream);
bitmap.recycle();

最佳答案

要正确使用路径,您应该首先创建它以在某个地方存储它,您可以使用它,然后删除它或使用您获得的结果中的数据。

这是创建 Uri 的代码,将其传递给您的 Intent。获得结果后,您可以使用 Uri 包中的 getPath 将 Uri 传递给另一个类。

/**
* Creating file uri to store image/video
*/
public static Uri getOutputMediaFileUri() {
return Uri.fromFile(getOutputMediaFile());
}

/**
* returning image / video
*/
private static File getOutputMediaFile() {

// External sdcard location
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"YOUR DIRECTORY NAME");

// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("image upload", "Oops! Failed create "
+ "YOUR DIRECTORY NAME" + " directory");
return null;
}
}

//TODO change naming
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
return mediaFile;
}

编辑 1:

要将文件转换为位图,您可以使用此代码,由@Nikhilreddy Gujjula 在this question 中提供。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);
selected_photo.setImageBitmap(bitmap);

关于android - java.lang.NullPointerException : uriString when receiving image sd card path 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com