растровое изображение Android не создается из base64

У меня есть приложение для Android, которое отправляет изображение в веб-службу. Я хочу отправить ту же фотографию из веб-службы на Android.

Я создал тестовую программу для сравнения данных base64, отправляемых с Android на сервер, и base64, отправляемых обратно с сервера на Android — они абсолютно идентичны.

Я хочу использовать строку base 64 для создания растрового изображения, поэтому я попробовал это:

String image = client1.getBaseURI("restaurantFoods/OneFood/"
            + this.getID() + "/getImage");

byte[] decodedString = Base64.decode(image, Base64.DEFAULT);
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,
                decodedString.length);
if(decodedByte == null){
            Log.d(this.getFoodItem().getName(), image);
            Log.d("isNull", "Yes");
        }
        else{
            Log.d("isNull", "No");}

Я продолжаю получать нуль, потому что журнал просто печатает «ДА».

Кто-нибудь может помочь?

Если вы хотите узнать, как я кодирую изображение, оно выглядит следующим образом:

private String getBase64(Bitmap bitmap) {
        String imgString = Base64.encodeToString(getBytesFromBitmap(bitmap),
                Base64.NO_WRAP);
        return imgString;
    }
private byte[] getBytesFromBitmap(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(CompressFormat.JPEG, 70, stream);
        return stream.toByteArray();
    }
Bitmap icon = BitmapFactory.decodeResource(this.getResources(),
                    R.drawable.pizza);
String iconBase64 = this.getBase64(icon);

person Smolina Fezaphitsh    schedule 06.06.2013    source источник
comment
пожалуйста, помогите, мне нужна помощь, пожалуйста   -  person Smolina Fezaphitsh    schedule 07.06.2013
comment
и у вас есть ответ .. или вам нужно полное решение ??   -  person MDMalik    schedule 08.06.2013
comment
@MDMalik ответ: я не отправлял base64 с сервера, у меня была проблема с получением изображения с sql server 2008 r2 с использованием jdbc. теперь проблема решена, спасибо   -  person Smolina Fezaphitsh    schedule 08.06.2013


Ответы (1)


Попробуйте это растровое изображение;

public Bitmap convert(String img){
    byte[] b = Base64.decode(img, Base64.DEFAULT);
    return BitmapFactory.decodeByteArray(b, 0, b.length);
}

И это для строки

    public String convert(Bitmap bm, int quality){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    bm.compress(Bitmap.CompressFormat.JPEG, quality, baos); 

    byte[] byt = baos.toByteArray(); 
    bm.recycle();
    return Base64.encodeToString(byt, Base64.DEFAULT);
}

На самом деле я не вижу никаких реальных проблем с вашим кодом, но они сработали для меня, поэтому я предлагаю вам попробовать их и посмотреть, действительно ли это ваша проблема.

person jcw    schedule 06.06.2013
comment
@SmolinaFezaphitsh - ааа, ты прав. Вы пытались напечатать строку, которую вы получаете от веб-службы, в журнал cat? Что это говорит? - person jcw; 06.06.2013
comment
Он говорит именно то, что я посылаю ему, я действительно буду скучать по своим мыслям - person Smolina Fezaphitsh; 06.06.2013
comment
Я использую Windows 7, оперативную память 4 ГБ, Android 2.3 Mobile Sony Ericsson Arc S - person Smolina Fezaphitsh; 06.06.2013