Подтвердить что ты не робот

Сколько способов конвертировать bitmap в строку и наоборот?

В моем приложении я хочу отправить растровое изображение на сервер в виде строки, я хочу знать, сколько способов доступно для преобразования растрового изображения в строку. теперь я использую формат 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);
4b9b3361

Ответ 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;
   }
}

Ответ 2

Да, вы можете сделать это, применив этот код:

String to Bitmap:

 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 для отправки изображений или других данных. нет необходимости в кодировании и декодировании. и вам нужно использовать multipart body для отправки данных на сервер.