如何将图像转换为Base64字符串

8

我想将图像转换为Base64编码字符串,然后以oma_status-icon XML格式发送到服务器。

但是,我从服务器响应中收到了不支持的编码错误信息...

是否有其他方法可以将图像转换为Base64字符串?

请帮忙看一下我的代码:

        Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),  R.drawable.image);

        ByteArrayOutputStream bao = new ByteArrayOutputStream();
        bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 100, bao);
        byte [] ba = bao.toByteArray();

         String ba1=Base64.encodeBytes(ba);

2
如果这对你有帮助,请接受答案,这样其他人也能受益。 - Nikhil
5个回答

15
请使用这段代码...
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),  R.drawable.image);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 100, bao);
byte [] ba = bao.toByteArray();
String ba1=Base64.encodeToString(ba,Base64.DEFAULT);

请导入

import android.util.Base64;

5
Base64.DEFAULT:传递 DEFAULT 参数会生成符合 RFC 2045 标准的输出结果。 - Nikhil
String ba1 = Base64.encodeToString(ba, Base64.DEFAULT); 在这里我遇到了base64.DEFAULT错误...我该怎么办? - SubbaReddy PolamReddy
3
base64.DEFAULT 不是小写的base64,它是用于Base64编码的默认字符串映射表。 - Nikhil
当我通过HTTP PUT请求以XML格式发送oma_status-icon字符串时,我收到了不支持的编码错误。 - SubbaReddy PolamReddy
我认为可能需要在服务器端进行检查。 我提供的代码在我的应用程序中100%有效。 - Nikhil
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/16358/discussion-between-nik-and-subbareddy-polamreddy - Nikhil

3
// convert from bitmap to byte array
public byte[] getBytesFromBitmap(Bitmap bitmap) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.JPEG, 70, stream);
    return stream.toByteArray();
}

// get the base 64 string
String imgString = Base64.encodeToString(getBytesFromBitmap(someImg), 
                       Base64.NO_WRAP);

2
尝试下面的代码。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte b [] = baos.toByteArray();
String base64String = Base64.encodeToString(b, Base64.DEFAULT);

别忘了 import android.util.Base64;


1

方法:

private String bitmapToBase64(Bitmap bitmap) {

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream .toByteArray();

    return Base64.encodeToString(byteArray, Base64.DEFAULT);
}

导入:

import android.util.Base64;
import java.io.ByteArrayOutputStream;

1

也许你可以尝试:

String base64Result = Base64.encodeToString(yourByteArray[], Base64.DEFAULT);


这是一个IT相关的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接