【问题标题】:How many ways to convert bitmap to string and vice-versa?有多少种方法可以将位图转换为字符串,反之亦然?
【发布时间】:2017-01-19 19:28:55
【问题描述】:

在我的应用程序中,我想以字符串的形式将位图图像发送到服务器,我想知道有多少种方法可以将位图转换为字符串。现在我使用 Base64 格式进行编码和解码,它需要更多的内存。是否有任何其他可能性以不同的方式做同样的事情,这需要更少的内存消耗。 现在我正在使用此代码。

Resources r = ShowFullImage.this.getResources();
Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.col);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object   
byte[] b = baos.toByteArray();

String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

【问题讨论】:

    标签: java android bitmapdata


    【解决方案1】:
    public String BitMapToString(Bitmap bitmap){
         ByteArrayOutputStream baos=new  ByteArrayOutputStream();
         bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);
         byte [] b=baos.toByteArray();
         String temp=Base64.encodeToString(b, Base64.DEFAULT);
         return temp;
    }
    

    这是将字符串转换为位图的相反过程,但字符串应该使用 Base64 编码

    /**
     * @param encodedString
     * @return bitmap (from given string)
     */
    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;
       }
    }
    

    【讨论】:

    • 我已经在使用 base64 格式,我正在寻找不同的格式。
    • 我的代码和你的代码有什么区别,我正在寻找不同的方式来转换,而不是使用 BAse64。
    • StringToBitMap 为空。请帮帮我。
    • 尝试在空对象引用上调用虚拟方法 'byte[] java.lang.String.getBytes()'。这就是我从 StringToBitmap 得到的
    【解决方案2】:

    是的,您可以通过执行此代码来做到这一点:

    字符串到位图:

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

    位图转字符串:

    public String BitMapToString(Bitmap bitmap) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] b = baos.toByteArray();
        String temp = Base64.encodeToString(b, Base64.DEFAULT);
        return temp;
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 byteArray 发送图像或其他数据。没有编码和解码要求。并且您必须使用多部分正文将数据发送到服务器..

      【讨论】:

      • 如果您可以与您的答案分享如何使用多部分正文进行图像上传,那将是非常可观和有用的? (可能与 android 和服务器代码块有关)
      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2011-05-27
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多