android位图不是从base64创建的

时间:2013-06-06 15:52:40

标签: android bitmap android-image

我有一个Android应用程序,它将图像发送到Web服务。我想将相同的照片从网络服务发送回Android。

我做了一个测试程序来比较从Android发送到服务器的base64数据和从服务器发送回Android的base64 - 它们完全相同。

我想使用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");}

我一直都是null,因为日志只打印“YES”。

有人可以帮忙吗?

如果您想知道我对图像进行编码的方式如下:

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

1 个答案:

答案 0 :(得分:0)

尝试这个位图;

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

这是String

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

我真的没有看到你的代码有任何实际问题,但这些对我有用,所以我建议你试试看,看看这实际上是你的问题。