На самом деле я пытаюсь загрузить изображение на сервер с отличным качеством. В настоящее время я конвертирую массив растровых изображений в base64
строку arrayList
, а затем отправляю его на сервер по socket.io
. Но проблема заключается в том, когда Я пытаюсь повысить качество растрового изображения, преобразование base64
отнимает много времени, и оно довольно неэффективно. Даже после того, как я потратил столько времени, я получаю низкокачественные изображения на сервере. Может кто-нибудь, пожалуйста, помогите мне исправить эта проблема и повысить эффективность загрузки?
Код:
public ArrayList<String> convert(ArrayList<Bitmap> bitmap){
ArrayList<String> pics=new ArrayList<>();
for(int i=0;i<bitmap.size();i++){
pics.add(getStringImage(bitmap.get(i)));
}
return pics;
}
public static String getStringImage(Bitmap bmp){
//I've givent maxSize as 500
int outWidth;
int outHeight;
int inWidth = bmp.getWidth();
int inHeight = bmp.getHeight();
if(inWidth > inHeight){
outWidth = maxSize;
outHeight = (inHeight * maxSize) / inWidth;
} else {
outHeight = maxSize;
outWidth = (inWidth * maxSize) / inHeight;
}
Bitmap new_bitmap = Bitmap.createScaledBitmap(bmp, outWidth, outHeight, false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
new_bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
// Sending to server
final JSONObject obji=new JSONObject();
try {
//bit is arraylist of bitmap
obji.put("uploads_username",username);
obji.put("uploads",convert(bit));
socket.emit("data",obji);
}catch(Exception e){
}