热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Android中解码base64字符串到位图-Decodingbase64StringtoBitmapinAndroid

CodepublicBitmapStringToBitMap(StringencodedString){try{b
Code
public Bitmap StringToBitMap(String encodedString){          
   try{              
         byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);               
         Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
         return bitmap;
       }catch(Exception e){
           e.getMessage();
           return null;
       } 
}

this always return null even i gave it encoded64 (utf-8) string--->aGVsbG8=

即使我给它赋了encoded64 (utf-8)字符串-->aGVsbG8=,它也总是返回null

Why this happening any one have idea..?? What i am doing Wrong can Any one Suggest me...

为什么会发生这种事?我做错了什么,谁能告诉我……

4 个解决方案

#1


1  

I think the problem is that you are trying to decode a base64 string to Bitmap, but actually you just want to decode it to a string. Here's the code to do that:

我认为问题是你试图把一个base64字符串解码成位图,但实际上你只是想把它解码成一个字符串。下面是这样做的代码:

String decodeBase64String(String encodedString)
{
    byte[] data = Base64.decode(encodedString, Base64.DEFAULT);
    return new String(data, "UTF-8");
}

(assumes UTF-8 encoding)

(假定utf - 8编码)

If you call this function with your test string like this:

如果你用你的测试字符串调用这个函数:

String result = decodeBase64String("aGVsbG8=");

then result will be "hello".

结果是“你好”。

Here's how to convert text to a Bitmap:

以下是如何将文本转换为位图:

Bitmap textToBitmap(String text)
{
     Paint paint = new Paint();
     paint.setColor(Color.WHITE);
     paint.setStrokeWidth(12);
     Rect bounds = new Rect();
     paint.getTextBounds(text, 0, text.length(), bounds);
     Bitmap bitmap = Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888);
     Canvas canvas = new Canvas(bitmap);
     canvas.drawText(text, 0, 0, paint);
     return bitmap;
}

So you can convert your base64 encoded text to a bitmap like this:

所以你可以把你的base64编码的文本转换成这样的位图:

String result = decodeBase64String("aGVsbG8=");
Bitmap bitmap = textToBitmap(result);

Or you could just do this:

或者你可以这样做:

Bitmap bitmap = textToBitmap("hello");

#2


1  

you can revert your code using some other built in methods.

您可以使用其他内置方法还原代码。

  String base="****Base64 string values of some image******”;
  byte[] imageAsBytes = Base64.decode(base.getBytes(), Base64.DEFAULT);
  ImageView image = (ImageView)this.findViewById(R.id.imageView1);
  image.setImageBitmap(
  BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)

#3


0  

Try this, might help you..

试试这个,可能对你有帮助。

String base="****Your Base64 string******”;

字符串基地= " * * * *你Base64字符串* * * * * *”;

byte[] imageBytes = Base64.decode(base.getBytes(), Base64.DEFAULT); ImageView.setImageBitmap(BitmapFactory.decodeByteArray(imageBytes, 0,imageBytes.length)

字节[]imageBytes = Base64.decode(base.getBytes(), Base64.DEFAULT);ImageView.setImageBitmap(BitmapFactory.decodeByteArray(imageBytes 0 imageBytes.length)

#4


0  

i checked it. it's working fine.

我检查它。这是工作正常。

may be your passing wrong "encodedString".

可能是您传递错误的“encodedString”。

test the below code

测试以下代码

String strBase64= "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAFA3PEY8MlBGQUZaVVBfeMiCeG5uePWvuZHI////////////////////////////////////////////////////2wBDAVVaWnhpeOuCguv/////////////////////////////////////////////////////////////////////////wAARCABeAJoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCsqgrnFLsHpQn3RTqoY3YPSjYPSnUUAN2L6UbF9KfRQAzYvpRsX0p9FADNi+lGxfSn0UAM2L6UbB6U/FJQIbsHpRsHpTqKAG7R6Um0elPpKYDdg9Kd5YpVqbhEU7QSfWiyIbK5THao6suBk4BA9DVWlJDi7kyfcFOpqH5BS7vagsWik3UbqAFpaTNLmgAopNwo3CgBaQ5A460m+lQlnAoewAM9+tFDkhyOKbuPtQtgHUUmaOaYC0lJ83rRz60CHDinrIyjAIx7iosmjJoE1cezZySck1WqbJqGlIErD1+7S0L90UUFBSU6jFAWAHFGaMUmKAsJRS4ooASpIfv/AIUypYPvE+1J7ANlHz1HUs33h9KaKa2AbzTlNLg9qAGphYUmmYJqTaaNppBYjCmnY9aXbS4oCw3FQVZxVakxEi4x1pwXPTmohTgSpyKVxpknlt6UbG9KesyEc8GpQAeRTuXoQhGPajY3pU+KMUXAh8qjyanoouBX8k0oAjVgTyanqGSMs/Hf3pMTEKhwuDnAo8oUsaFX5/nUuKECIdnvQFI71Nim4p3HYbg0Yp+KTFAhmKMU/FJigBlVqsuwUc1WoZLJYdufmp8yoeU49qgU4pSxPGaRFtRKnhnCrtYE1BUsRCg5HPrQVexI1yv8IP41JE+9MkjPeqbdaccKqsrHd3pD5i7SVXFw/dc09Zlbvg+9LUu6JGIUc0wOu4k8YFJNygP5VEIc9wD70C6kxdQT705SGGRVfyvQg/SpYxtTIPFAIkpKjaUKM5z+NM88/wB2mO6J6aWCjkiq6uzuAWIzTW+8cnPvTJ5h7TOTxwKjyT3pzMCAABxTaCb3DvzTadSUAApaQHFLuoAKATjFG6jd7UALg0nWjdRu9qBCjIowaTdRuoAdkjHtT9ynlsk1Fuo3Uhkm4AfLkUm44I9aZuo3UAKcmg5OKTdRupiAZFHJo3UbqBhiijdSZoAWm0uaKAP/2Q==";

字符串strBase64 =“/ 9 j / 4 aaqskzjrgabaqaaaqabaad / 2 wbdafa3pey8mlbgquzavvbfemiceg5uepwvuzhi / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 2 wbdavvawnhpeoucguv / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / wAARCABeAJoDASIAAhEBAxEB / 8 qahwaaaqubaqebaqeaaaaaaaaaaaecawqfbgcicqol / 8 qatraaagedawieawufbaqaaaf9aqidaaqrbrihmuege1fhbyjxfdkbkaeii0kxwrvs0fakm2jyggkkfhcygroljicokso0nty3odk6q0rfrkdisuptvfvwv1hzwmnkzwznaglqc3r1dnd4exqdhiwgh4ijipktljwwl5izmqkjpkwmp6ipqrkztlw2t7i5usldxmxgx8jjytlt1nxw19jz2uh当+ Tl5ufo6erx8vP09fb3 + Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL / 8 qatreaagecbaqdbacfbaqaaqj3aaecaxeebsexbhjbuqdhcrmimoeifekrobhbcsmzuvavynlrchyknoel8rcygromjygpkju2nzg5okneruzhselku1rvvldywvpjzgvmz2hpann0dxz3ehl6gooehyahiimkkpoulzaxmjmaoqokpaanqkmqsro0tba3ulm6wspexcbhymnk0tpu1dbx2nna4upk5ebn6onq8vp09fb3 + Pn6/9oADAMBAAIRAxEAPwCsqgrnFLsHpQn3RTqoY3YPSjYPSnUUAN2L6UbF9KfRQAzYvpRsX0p9FADNi + lGxfSn0UAM2L6UbB6U / FJQIbsHpRsHpTqKAG7R6Um0elPpKYDdg9Kd5YpVqbhEU7QSfWiyIbK5THao6suBk4BA9DVWlJDi7kyfcFOpqH5BS7vagsWik3UbqAFpaTNLmgAopNwo3CgBaQ5A460m + lQlnAoewAM9 + tFDkhyOKbuPtQtgHUUmaOaYC0lJ83rRz60CHDinrIyjAIx7iosmjJoE1cezZySck1WqbJqGlIErD1 + 7 s0l90uufbsu6jfawahfgamumkasjrs4ooaspifv / AIUypYPvE + 1 j7anlhz1hus33h9kaka2abztlnlg9qagphyummyjqtaanppbyjcmny9axbs4ocw3fqvzxvakxei4x1pwxptmohtgspykvxpknlt6ubg9kesyec8gpqaertuxoqhgpajy3pu + KMUXAh8qjyanoouBX8k0oAjVgTyanqGSMs / Hf3pMTEKhwuDnAo8oUsaFX5 nUuKECIdnvQFI71Nim4p3HYbg0Yp + KTFAhmKMU / FJigBlVqsuwUc1WoZLJYdufmp8yoeU49qgU4pSxPGaRFtRKnhnCrtYE1BUsRCg5HPrQVexI1yv8IP41JE + 9 mkjpeqbdaccKqsrHd3pD5i7SVXFw / dc09Zlbvg + 9 luu6jgiuc0wou4k8yfjnygp5veic9wd70c6kxdqt705sggrvfyvqg / SpYxtTIPFAIkpKjaUKM5z + NM88 / wB2mO6J6aWCjkiq6uzuAWIzTW + 8 cnpvtj5h7totxwkjyt3pzmcaabxtacb3dvztadsuaapaqhfluoakatjfg6jd7ualg0nwjdru9qbcjiowatdruoadkjhtt9ynlsk1fuo3uhkm4aflkum44i9azuo3uakcmg5oktdrupiazfhjo3ubqbhiijdszoawm0uakap / 2 q = =”;

    Log.d("base64 String: ", strBase64);


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

推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
灰灰t2502911555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有