Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有多少种方法可以将位图转换为字符串,反之亦然?_Java_Android_Bitmapdata - Fatal编程技术网

Java 有多少种方法可以将位图转换为字符串,反之亦然?

Java 有多少种方法可以将位图转换为字符串,反之亦然?,java,android,bitmapdata,Java,Android,Bitmapdata,在我的应用程序中,我想以字符串的形式向服务器发送位图图像,我想知道有多少种方法可以将位图转换为字符串。现在我使用Base64格式进行编码和解码,它占用的内存稍多一些。是否有其他可能以不同的方式完成相同的事情,从而减少内存消耗。 现在我正在使用这个代码 Resources r = ShowFullImage.this.getResources(); Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.col); ByteArrayOutpu

在我的应用程序中,我想以字符串的形式向服务器发送位图图像,我想知道有多少种方法可以将位图转换为字符串。现在我使用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);

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

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

是的,您可以执行以下代码:

要位图的字符串:

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

我已经在使用base64格式,我正在寻找不同的格式。我的代码和您的代码之间的区别是什么,我正在寻找除使用base64以外的其他转换方法。StringToBitMap将显示为null。请帮助我。尝试在空对象引用上调用虚拟方法“byte[]java.lang.String.getBytes()”。这就是我从StringToBitmapIt中得到的,如果你能分享你的答案,那么它将是非常值得欣赏和有用的,如何使用多部分主体进行图像上传?(可能使用android和服务器代码块)