0

画像を Web サービスに送信する Android アプリケーションがあります。Web サービスから Android に同じ写真を送り返したい。

Android からサーバーに送信される base64 データと、サーバーから Android に返される base64 データを比較するテスト プログラムを作成しました。これらはまったく同じです。

ベース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");}

ログに「YES」と表示されるだけなので、null になり続けます。

誰でも助けてもらえますか?

画像をエンコードする方法を知りたい場合は、次のとおりです。

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);
4

1 に答える 1

0

これをビットマップにしてみてください。

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);
}

本当にあなたのコードに実際の問題は見られませんが、これらは私にとってはうまくいったので、試してみて、それが実際にあなたの問題であるかどうかを確認することをお勧めします.

于 2013-06-06T16:12:29.540 に答える