Как быстро и качественно загрузить изображение на сервер - PullRequest
0 голосов
/ 08 мая 2018

На самом деле я пытаюсь загрузить изображение на сервер с отличным качеством. В настоящее время я конвертирую массив растровых изображений в 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){
                                }
...