我想發送圖像到我的服務器。我通過在LINK安卓圖像上傳到服務器從相機錯誤
考慮看看在教程做這個但是我需要發送照片從相機拍攝,而不是畫廊,所以我做了一些變化,我得到這樣一個錯誤:
致命異常:主要 進程:com.example.audriusalekna.camerapht,PID:25792 java.lang.RuntimeException:傳遞結果失敗ResultInfo {who = null,request = 1,result = -1,data = Intent {act = inline-data(has extras)}} to activity {com.example.audriusalekna.camerapht/com.example.audriusalekna.camerapht.MainActivity}:java.lang.NullPointerException:試圖調用虛擬方法'boolea n android.graphics.Bitmap.compress(android.graphics.Bitmap $ CompressFormat,int,java.io.OutputStream)'在android.app.ActivityThread.deliverResults(ActivityThread.java:3887) 上的null對象引用 .app.ActivityThread.handleSendResult(ActivityThread.java:3930) at android.app.ActivityThread.access $ 1300(ActivityThread.java:178) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1561) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5692) 在java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。 java:959) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 引發:java.lang.NullPointerException:嘗試調用虛擬方法'boolean android.graphics.Bitmap.compress(android .graphics.Bitmap $ CompressFormat,int,java.io.OutputStream)'在空對象引用 at com.example.audriusalekna.camerapht.MainActivity.onActivityResult(MainActivity.java:70) at android.app.Activity.dispatchActivityResult (Activity.java:6346) at android.app.ActivityThread.deliverResults(ActivityThread.java:3883) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3930) at android.app.ActivityThread.access $ 1300(ActivityThread.java:178) at android.app.ActivityThread $ h.handleMessage(ActivityThread.java:1561) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5692) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372)
從MainActivity我的代碼是在這裏:
package com.example.audriusalekna.camerapht;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;
import static android.R.attr.bitmap;
import static android.R.attr.x;
import static android.R.attr.y;
import static android.provider.ContactsContract.CommonDataKinds.Website.URL;
public class MainActivity extends AppCompatActivity {
static final int REQUEST_IMAGE_CAPTURE = 1;
private Uri fileUri;
private ImageView imageView;
Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button cameraBtn = (Button) findViewById(R.id.push_button);
imageView = (ImageView)findViewById(R.id.imageTest);
cameraBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
final String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);
//sending image to server
StringRequest request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>(){
@Override
public void onResponse(String s) {
if(s.equals("true")){
Toast.makeText(MainActivity.this, "Uploaded Successful", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(MainActivity.this, "Some error occurred!", Toast.LENGTH_LONG).show();
}
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this, "Some error occurred -> "+volleyError, Toast.LENGTH_LONG).show();;
}
}) {
//adding parameters to send
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("image", imageString);
return parameters;
}
};
RequestQueue rQueue = Volley.newRequestQueue(MainActivity.this);
rQueue.add(request);
}
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri filePath = data.getData();
try {
//getting image from gallery
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
//Setting image to ImageView
imageView.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
當您發送照片時,您是否在「ImageView」中看到它? – Guillaume
我認爲這個鏈接幫助完全爲你http://stackoverflow.com/questions/8373755/java-lang-runtimeexception-failure-delivering-result-resultinfowho-null-reque –
'java.lang.NullPointerException:試圖調用虛擬方法'布爾android.graphics.Bitmap.compress(android.graphics.Bitmap $ CompressFormat,int,java.io.OutputStream)'在空對象引用'。採取你的措施。 – greenapps