Сколько способов конвертировать 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);
Ответы
Ответ 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 для отправки данных на сервер.