2016-07-10 1 views
0

My Base64 String преобразуется из фотографии. Я пытаюсь поместить их в свой json-объект, но это приведет к тому, что часть String Base64 будет разрезана, и даже другой объект json может исчезнуть. Когда я заменяю оригинальную короткую Base64 String, формат json будет в порядке. Как я мог ее исправить?не удается установить Base64 String в json

public void TakePhotoOnClick(View view) { 
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

    file = Environment 
      .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
    file = new File(file, "picture.jpg"); 
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
    if (isIntentAvailable(this, cameraIntent)) { 
     startActivityForResult(cameraIntent, REQUEST_TAKE_PICTURE); 
    } else { 
     Toast.makeText(this, R.string.msg_NoCameraAppsFound, 
       Toast.LENGTH_SHORT).show(); 
    } 

} 

private boolean isIntentAvailable(Context context, Intent intent) { 
    PackageManager packageManager = context.getPackageManager(); 
    List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 
      PackageManager.MATCH_DEFAULT_ONLY); 
    return list.size() > 0; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.w(" MainActivity","onActivityResult"); 
    if (requestCode == REQUEST_TAKE_PICTURE && resultCode == RESULT_OK) { 

     Bitmap picture = BitmapFactory.decodeFile(file.getPath()); 
     ivDriverPhoto.setImageBitmap(picture); 

     ByteArrayOutputStream out1 = new ByteArrayOutputStream(); 
     picture.compress(Bitmap.CompressFormat.JPEG, 50, out1); 
     image = out1.toByteArray(); 
     driver_photo = Base64.encodeToString(image, Base64.DEFAULT); 
     Log.w(" MainActivity","image"+ driver_photo); 

    } 

} 

Фото Base64 Строка как следующая строка: изображение/9J/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9 ... (. Это слишком долго, чтобы показать его полностью)

И короткий тест Base64 Укус, как показано ниже: изображение/PNG; base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1 + jfqAAAAAnNCSVQICFXsRgQAAAAJcEhZcwAAAHoAAAB6AZUMqX8AAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAA4ElEQVQoz6XRzyvDcRgH8JdJObmsJMUf4KIotaJEUYrLNPnxTY4r3Ocw32K + HwpxmZ1cN H/C/rzHYVvNZQ56X1/P09P7EcbHn0AmH5OMYux8QQqmXSk8K8yasCWX2zMZpD44txSCDccOVZVsaqiPgm + v2roqntxpq/n0oTQEy05CcGnem1YIrnSUByDIzVlwY1FNS + bIix1rww3beh4kPR119y6cSs40JJIDTeuaCquSjtsQXHu32wePSkHZTNA0paFqX2FCkij6VwyKyUOwohKCpCDTHan261fRXZl/ж/MHNSqo8Xq9umsAAAAASUVORK5CYII =

+0

Итак, ваша проблема в том, когда вы пытаетесь поставить 'driver_photo' в объект JSON? В вашем коде ничего не связано с json ... Также странно, что обе строки base64 имеют «image /' в начале ... Они генерируются Base64.encode? – Salem

+0

Да, фото Base64 String - из Log (Log.w («MainActivity», «image» + driver_photo)). –

ответ

0

Я решить эту проблему с помощью BitmapFactory, чтобы уменьшить размер изображения и строку Base64 будет достаточно коротким, чтобы положить в JSON.