1
我試圖從圖庫中獲取圖像並將其發送到服務器。
我得到一個base64編碼的字符串,但它是一條細線,而不是整個圖像。
Base64編碼正在成爲一塊圖像
例如,我用Motobit解碼this random image.基於64位字符串我 工作正常。但是,編碼字符串,我從我的應用程序在同一圖像得到的是真的很小,而且在轉換爲圖像變得this.
這裏是我的代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_profile);
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PHOTO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case SELECT_PHOTO:
if(resultCode == RESULT_OK){
try {
Uri selectedImage = imageReturnedIntent.getData();
String imageStream = getRealPathFromURI(context, selectedImage);
Bitmap bitmap = BitmapFactory.decodeFile(imageStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
String encodedString = Base64.encodeToString(byteArray, Base64.DEFAULT);
Log.e(LOG_TAG, encodedString);
}catch (Exception e){
e.printStackTrace();
}
}
}
}
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
什麼使得我的encodedString
只成爲圖像的一部分?謝謝!
您未顯示如何解碼您的encodedString。那麼我們如何評論哪裏出了問題呢?這在哪裏出錯?你沒有告訴。你應該告訴字節數組的大小和字符串的長度。小嗎?確切地說。 – greenapps
@greednapps我在這個網站解碼:http://codebeautify.org/base64-to-image-converter – CasMindspark
@greenapps因爲當我把這種方式發送到服務器它會作爲一個損壞的圖像。 – CasMindspark