如何将Base64string转换为BitMap图像以在ImageView中显示它?

我有一个Base64string,表示一个BitMap图像。

我需要再次将该string转换为BitMap图像,以便在Android应用程序的ImageView上使用它

怎么做?

这是我用来将图像转换为base64string的代码:

//proceso de transformar la imagen BitMap en un String: //android:src="c:\logo.png" Resources r = this.getResources(); Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.logo); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object byte[] b = baos.toByteArray(); //String encodedImage = Base64.encode(b, Base64.DEFAULT); encodedImage = Base64.encodeBytes(b); 

你可以基本上使用其他内置方法恢复你的代码。

 byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

对于仍然对这个问题感兴趣的人:如果:1-decodeByteArray返回null 2-Base64.decode抛出bad-base64exception

这里是解决scheme: – 你应该考虑从API发送给你的价值是Base64编码,应该首先解码,以便将其转换为位图对象! – 看看你的Base64编码的string,如果它开始

数据:图像/ JPG; BASE64

Base64.decode将无法解码,所以它必须从您的编码string中删除:

 final String encodedString = "data:image/jpg;base64, ...."; final String pureBase64Encoded = encodedString.substring(encodedString.indexOf(",") + 1); 

现在pureBase64Encoded对象准备好被解码了:

 final byte[] decodedBytes = Base64.decode(pureBase64Encoded, Base64.DEFAULT); 

现在只需简单地使用下面的代码把它变成一个位图对象! :

位图decodedBitmap = BitmapFactory.decodeByteArray(decodedBytes,0,decodedBytes.length);

或者,如果你使用伟大的图书馆滑翔

 Glide.with(CaptchaFragment.this).load(decodedBytes).crossFade().fitCenter().into(mCatpchaImageView); 

这应该做的工作! 浪费了一天的时间,并提出了这个解决scheme!

注意 :如果你仍然遇到bad-base64错误,请考虑其他Base64.decode标志,如Base64.URL_SAFE等等

这是一个非常古老的线程,但想到分享这个答案,因为它花了我的开发时间很多,以pipe理@Anirudh所面临的BitmapFactory.decodeByteArray() NULL返回。

如果encodedImagestring是JSON响应,只需使用Base64.URL_SAFE而不是Base64.DEAULT

 byte[] decodedString = Base64.decode(encodedImage, Base64.URL_SAFE); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

要在线检查,您可以使用

http://codebeautify.org/base64-to-image-converter

你可以像这样把string转换成图像

 import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Base64; import android.widget.ImageView; import java.io.ByteArrayOutputStream; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView image =(ImageView)findViewById(R.id.image); //encode image to base64 string ByteArrayOutputStream baos = new ByteArrayOutputStream(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] imageBytes = baos.toByteArray(); String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT); //decode base64 string to image imageBytes = Base64.decode(imageString, Base64.DEFAULT); Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); image.setImageBitmap(decodedImage); } } 

http://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html