有多less种方法将位图转换为string,反之亦然?

在我的应用程序中,我想以string的forms发送位图图像到服务器,我想知道有多less种方式可用于将位图转换为string。 现在我正在使用Base64格式进行编码和解码,需要更多的内存。 还有什么其他的可能性,以不同的方式做同样的事情,花费更less的内存消耗。 现在我正在使用这个代码。

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

Solutions Collecting From Web of "有多less种方法将位图转换为string,反之亦然?"

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

这是将string转换为位图的相反过程,但string应该是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; } } 

是的,你可以通过执行下面的代码来实现:

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

位图string:

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

您可以使用byteArray来发送图像或其他数据。 没有编码和解码的要求。 你必须使用多部分机构发送数据到服务器..