2010-09-27 112 views
11

嗨stackoverflow团队我在将android base64字符串转换为位图时出现问题。我正在使用相机来获取图像,我将图像转换为base64字符串以发布到服务器。我想在图像视图中显示该图像,因此如何在从相机获取图像后在ImageView中显示图像。请帮我解决问题。将base64字符串转换为位图的Android代码

+3

只是为了更好的理解:你为什么想用base64图像先进行编码,然后发送解码它将其再次显示到ImageView中?首先获取它并将其显示在ImageView中,然后将其编码到base64中以将其发送到服务器会不会更容易? ^^ – Tseng 2010-09-27 18:56:29

回答

21

假设你的图像数据是在一个名为myImageData字符串,下面应该做的伎俩:

byte[] imageAsBytes = Base64.decode(myImageData.getBytes(), Base64.DEFAULT); 
    ImageView image = (ImageView)this.findViewById(R.id.ImageView); 
    image.setImageBitmap(
      BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length) 
    ); 

对于Base64编码解码,可以使用http://iharder.sourceforge.net/current/java/base64/由于Android不包含2.2之前的Base64支持。

请注意,我没有真正运行此代码,因此您必须重新检查错误。

+3

这是否也适用于base64编码的png? – pfrank 2013-12-20 07:30:27

+1

在我的情况:'字节[] imageBitmap = Base64.decode(mEncodedImageData, \t \t \t \t \t \t \t Base64.DEFAULT); ' – 2015-04-04 09:12:43

8

编辑:接受职位现在已经更新到我的回答下面复制,要么是正确的

接受的答案是不是至少在豆形软糖,奇巧或棒棒糖正确的。您应该使用以下适用于JPEG,PNG或GIF图像的内容。

byte[] imageAsBytes = Base64.decode(myImageData.getBytes(), Base64.DEFAULT); 
ImageView image = (ImageView)this.findViewById(R.id.ImageView); 
image.setImageBitmap(
     BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length) 
); 
+0

Tur - 这是不是TuomasR的代码(这是公认的答案)? – AshesToAshes 2015-08-09 08:13:45

+2

@AshesToAshes现在他们已经更新了他们的答案,以复制我的(http://stackoverflow.com/posts/3801881/revisions) – Apqu 2015-08-13 12:45:47

3

记下简单的方法传递Base64编码字符串,它会返回位图对象

Bitmap Base64ToBitmap(String myImageData) 
    { 
     byte[] imageAsBytes = Base64.decode(myImageData.getBytes(),Base64.DEFAULT); 
     return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); 
    } 
+0

这对我有效。你能否理解这种转换? – 2016-11-01 09:47:13

相关问题