2014-02-08 91 views
0

我想問是否有任何方法將圖像視圖圖像(圖像從圖庫/相機捕獲設置)轉換爲base64字符串?我已經嘗試了多種方式,但我一直在收到空指針異常。有沒有人有任何想法解決這個問題?我將我的base64字符串存儲到windows azure中。我試圖把這個方法放進去。請注意,我刪除了我的API密鑰和initmobileservice方法該網頁的網址,所以請理解,謝謝你提前Java android將imageview圖像轉換爲base64空指針異常

ImageView image; 
Bitmap bitmap; 
String baseUrl = ""; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.addramps); 

    GetLatLon(); 
    InitMobileService(); 
    pref = getApplicationContext().getSharedPreferences("Account", 0); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 

    description = (EditText) findViewById(R.id.tb_Description); 
    rbStairs = (RadioButton) findViewById(R.id.stairsRadioButton); 
    rbRamps = (RadioButton) findViewById(R.id.rampssRadioButton); 
private void dataSave() { 
    if (rbStairs.isChecked() || rbRamps.isChecked()) { 

     //Error Here 

     Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.id.stairsRampsPhoto); 
     ByteArrayOutputStream stream=new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); 
     byte[] image=stream.toByteArray(); 
     final String base64 = Base64.encodeToString(image, 0); 

     final String lon = latlon.get(0), lat = latlon.get(1); 

     String userType = GetData("userType"); 
     final String id = GetData("id"); 
     if (userType.equals("caretaker")) { 
      mClient.getTable(careTakersProfile.class).where().field("id") 
        .eq(id) 
        .execute(new TableQueryCallback<careTakersProfile>() { 
         @Override 
         public void onCompleted(
           List<careTakersProfile> result, int arg1, 
           Exception exception, 
           ServiceFilterResponse response) { 
          if (exception == null) { 
           mClient.getTable(dataAnalysis.class) 
             .insert(new dataAnalysis(
               base64, 
               description.getText() 
               .toString(), 
               lat, 
               lon, 
               result.get(0).getNRIC(), 
               rbStairs.isChecked() ? "Stairs" 
                 : "Ramps"), 
               new TableOperationCallback<dataAnalysis>() { 
                @Override 
                public void onCompleted(
                  dataAnalysis entity, 
                  Exception exception, 
                  ServiceFilterResponse response) { 
                 if (exception == null) { 
                 } 
                } 
               }); 
          } 
         } 
        }); 
     } 
private void GetLatLon() { 
    final LocationListener locationListener = new LocationListener() { 

     public void onLocationChanged(Location location) { 
      latlon.add(location.getLongitude() + ""); 
      latlon.add(location.getLatitude() + ""); 
     } 

     @Override 
     public void onProviderDisabled(String arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProviderEnabled(String arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
      // TODO Auto-generated method stub 

     } 
    }; 
    LocationManager lm = (LocationManager) getSystemService(getApplicationContext().LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 0, 
      locationListener); 
} 
private void InitMobileService() { 
    try { 
     mClient = new MobileServiceClient(
       "", 
       "", this); 
    } catch (MalformedURLException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
} 

private void ClearData() { 
    Editor edit = pref.edit(); 
    edit.clear(); 
    edit.commit(); 
} 

private void AddData(String key, String value) { 
    Editor edit = pref.edit(); 
    edit.putString(key, value); 
    edit.commit(); 
} 

private String GetData(String key) { 
    return pref.getString(key, ""); 
} 

這裏是我的logcat輸出

02-09 10:34:23.230: E/AndroidRuntime(434): FATAL EXCEPTION: main 
02-09 10:34:23.230: E/AndroidRuntime(434): Process: com.example.androidjavaproject, PID: 434 
02-09 10:34:23.230: E/AndroidRuntime(434): java.lang.NullPointerException 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at com.example.androidjavaproject.AddrampsActivity.dataSave(AddrampsActivity.java:151) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at com.example.androidjavaproject.AddrampsActivity.access$0(AddrampsActivity.java:145) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at com.example.androidjavaproject.AddrampsActivity$1.onClick(AddrampsActivity.java:83) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at android.view.View.performClick(View.java:4445) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at android.view.View$PerformClick.run(View.java:18429) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at android.os.Handler.handleCallback(Handler.java:733) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at android.os.Handler.dispatchMessage(Handler.java:95) 
02-09 10:34:23.230: E/AndroidRuntime(434): at android.os.Looper.loop(Looper.java:136) 
02-09 10:34:23.230: E/AndroidRuntime(434): 
at android.app.ActivityThread.main(ActivityThread.java:5087) 
02-09 10:34:23.230: E/AndroidRuntime(434): at 
java.lang.reflect.Method.invokeNative(Native Method) 
02-09 10:34:23.230: E/AndroidRuntime(434): at 
java.lang.reflect.Method.invoke(Method.java:515) 
02-09 10:34:23.230: E/AndroidRuntime(434): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781) 
02-09 10:34:23.230: E/AndroidRuntime(434): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-09 10:34:23.230: E/AndroidRuntime(434): at dalvik.system.NativeStart.main(Native 
Method) 
+0

後logcat的輸出 –

+0

,我能夠有一次,我把它改成一個R.drawable.stairsRampsPhoto存儲值,但我需要存儲我的照片從手機的圖片庫由用戶選擇,以便沒有任何人有任何想法如何去它? – CodeNewbie

+1

嘗試使用[this](http://stackoverflow.com/a/17532972/1777090) –

回答

0

最大的可能是其不獲取圖像繪製。

更換

Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.id.stairsRampsPhoto); 

Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.stairsRampsPhoto); 

希望它能幫助。

+0

抱歉缺少日誌貓輸出。我的logcat輸出自動清除自己,我還沒有修復。我的圖像不是從可繪製文件夾中提取的,而是從畫廊中選擇的。但是,無論如何,謝謝你的幫助= D – CodeNewbie