Java 在android目录中保存图像时出现空指针异常
我尝试了下面的代码,在其中我试图将我上传的图像保存到SD卡文件夹中,并使用一些名称。它在提到的行中给出了空指针异常。有什么建议吗 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()” 代码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
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
是否不为空?