Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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 在android目录中保存图像时出现空指针异常_Java_Android_Bitmap_Io_Nullpointerexception - Fatal编程技术网

Java 在android目录中保存图像时出现空指针异常

Java 在android目录中保存图像时出现空指针异常,java,android,bitmap,io,nullpointerexception,Java,Android,Bitmap,Io,Nullpointerexception,我尝试了下面的代码,在其中我试图将我上传的图像保存到SD卡文件夹中,并使用一些名称。它在提到的行中给出了空指针异常。有什么建议吗 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()” 代码 protected void onActivityResult(int requestCode, int resu

我尝试了下面的代码,在其中我试图将我上传的图像保存到SD卡文件夹中,并使用一些名称。它在提到的行中给出了空指针异常。有什么建议吗

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()”

代码

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode==i && resultCode==RESULT_OK && data != null){
    Uri selectedImage =  data.getData();
    coverpic.setImageURI(selectedImage);
    Bitmap  image =( (BitmapDrawable)coverpic.getDrawable()).getBitmap();//This line throws the exception
    if (!direct.exists()) {
    File wallpaperDirectory = new File("/images/");
    wallpaperDirectory.mkdirs();
     }
     Bundle extras = getIntent().getExtras();
     File file = new File(new File("/images/"),extras.getString("name")+i + ".jpg" );
            if (file.exists()) {
                file.delete();
            }
     try{
    FileOutputStream out=new FileOutputStream(file);
    image.compress(Bitmap.CompressFormat.JPEG,100,out);
    out.flush();
    out.close();
    }
catch(Exception e)
            {
                e.printStackTrace();
              }
        }

尝试此操作,这将调整图像大小并将图像保存到手机

还要确保您在清单文件中拥有正确的权限

在这里,我也使用位图,我认为这是任何简单的方法,它不会给出一个空指针

在onActivityresult中

 if(requestCode==i && resultCode==RESULT_OK && data != null){
    Uri selectedImage =  data.getData();
   select(selectedImage);
查找文件

  public void select(Uri selectedImage) {
            // TODO Auto-generated method stub
            String[] filePathColumn = {MediaStore.Images.Media.DATA};
            Cursor cursor =getActivity().getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath2 = cursor.getString(columnIndex);
            cursor.close();

                save(new File(picturePath2));

        }
保存文件

public File save(final File file_) {
        // TODO Auto-generated method stub
        System.out.println("newfilepath come to resize");
        File dir = new File(Environment.getExternalStorageDirectory().getPath()
                + "/Images/");
        try {
            dir.mkdir();
        } catch (Exception e) {
            e.printStackTrace();

        }
        String filename = Environment.getExternalStorageDirectory().getPath()
                + "/Images/";
        File newfile = new File(filename);
        String Unedited_Img_Name = "myfile"
                + String.valueOf(System.currentTimeMillis()) + ".jpg";
        final File file = new File(newfile, Unedited_Img_Name);
        new AsyncTask<Void, Void, Bitmap>() {

            @Override
            protected Bitmap doInBackground(Void... params) {
                // TODO Auto-generated method stub
                Bitmap b = null;
                try {
                    b = Glide.with(getActivity()).load(file_).asBitmap().into(200,200)
                            .get();
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (ExecutionException e) {
                    e.printStackTrace();
                }
                FileOutputStream fOut;
                try {
                    fOut = new FileOutputStream(file);
                    b.compress(Bitmap.CompressFormat.PNG, 100, fOut);
                    fOut.flush();
                    fOut.close();
                    b.recycle();
                } catch (Exception e) { // TODO

                }
                return null;
            }

            @Override
            protected void onPostExecute(Bitmap result) {
                // TODO Auto-generated method stub
                super.onPostExecute(result);
                String newfilepath = file.getAbsolutePath();

                int file_size = Integer
                        .parseInt(String.valueOf(file.length() / 1024));
                file_size = Integer.parseInt(String.valueOf(file_.length() / 1024));
                if (file_size < 150) {
                    newfilepath = file_.getAbsolutePath();
                }

            }
        }.execute();
        return file;
    }
公共文件保存(最终文件){
//TODO自动生成的方法存根
System.out.println(“newfilepath开始调整大小”);
File dir=新文件(Environment.getExternalStorageDirectory().getPath())
+“/图像/”;
试一试{
dir.mkdir();
}捕获(例外e){
e、 printStackTrace();
}
字符串filename=Environment.getExternalStorageDirectory().getPath()
+“/图像/”;
File newfile=新文件(文件名);
字符串未编辑\u Img\u Name=“myfile”
+String.valueOf(System.currentTimeMillis())+“.jpg”;
最终文件=新文件(新文件,未编辑的名称);
新建异步任务(){
@凌驾
受保护位图doInBackground(无效…参数){
//TODO自动生成的方法存根
位图b=null;
试一试{
b=Glide.with(getActivity()).load(file_uz).asBitmap().into(200200)
.get();
}捕捉(中断异常e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}捕获(执行例外){
e、 printStackTrace();
}
FileOutputStream-fOut;
试一试{
fOut=新文件输出流(文件);
b、 压缩(Bitmap.CompressFormat.PNG,100,fOut);
fOut.flush();
fOut.close();
b、 回收();
}捕获(异常e){//TODO
}
返回null;
}
@凌驾
受保护的void onPostExecute(位图结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
字符串newfilepath=file.getAbsolutePath();
int file_size=Integer
.parseInt(String.valueOf(file.length()/1024));
file_size=Integer.parseInt(String.valueOf(file_u.length()/1024));
如果(文件大小<150){
newfilepath=file_u2;.getAbsolutePath();
}
}
}.execute();
返回文件;
}

@bhargav这是一张上传的照片variable@gvmani我怎样才能解决这个问题this@AnoushaKhan您确定
selectedImage
是否不为空?