Превращение растрового объекта в строку base64, имеющую проблемы - PullRequest
0 голосов
/ 18 октября 2011

У меня есть простое приложение, где изображение захватывается с камеры, а затем передается моему методу onActivityResult ().Однако я не могу закодировать растровое изображение в строку base64.Eclipes говорит мне, что строка byte[] encodedImage = Base64.encode(b, Base64.DEFAULT); должна быть байтом [], а не строкой, поэтому я думаю, что именно в этом и заключается проблема (отсюда и строка под ней, пытающаяся использовать ее в качестве объекта строки).Мой код ниже, этот метод запускается и появляется журнал, но данные НЕ являются base64.

Может кто-нибудь помочь мне, пожалуйста.

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    switch(requestCode){
        case TAKE_PHOTO_CODE:
            if( resultCode == RESULT_OK ){
                Bitmap thumbnail = (Bitmap) intent.getExtras().get("data");
                ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
                byte[] b = baos.toByteArray(); 
                byte[] encodedImage = Base64.encode(b, Base64.DEFAULT);
                String encodedImageStr = encodedImage.toString();

                Log.e("LOOK", encodedImageStr);


            }
            // RESULT_CANCELED
        break;          
    }               
}

Ответы [ 2 ]

2 голосов
/ 18 октября 2011

toString объекта массива ничего не делает с содержимым массива

вы должны использовать

String encodedImageStr = new String(encodedImage);

или вы можете перейти непосредственно к строке с

String encodedImageStr = Base64.encodeToString(b,Base64.DEFAULT);
0 голосов
/ 18 октября 2011
 Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();
                encode = Base64.encodeBytes(byteArray);
                try {
                    byte[] decode = Base64.decode(encode);
                    Bitmap bmp = BitmapFactory.decodeByteArray(decode, 0,
                            decode.length);
                    imgview_photo.setImageBitmap(bmp);
                                }
...