小尺寸图片上传

Low size image uploading

我尝试上传图片到服务器。我通过路径获取图像并将其转换为字节数组:

BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap picture = BitmapFactory.decodeFile(imagePath, bmOptions);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
ByteArrayOutputStream bao = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);
byte[] bytes = bao.toByteArray();

builder.addPart("uploadedfile", new ByteArrayBody(bytes, "name" + ".jpg"));

例如图片大小为 300kb 但上传的图片大小为 800kb。

如何在不增加尺寸的情况下发送图片(按路径选择)?


灵魂

@greenapps 对。我将图像转换为文件:

public static byte[] fullyReadFileToBytes(File f) throws IOException {
    int size = (int) f.length();
    byte bytes[] = new byte[size];
    byte tmpBuff[] = new byte[size];
    FileInputStream fis= new FileInputStream(f);;
    try {

        int read = fis.read(bytes, 0, size);
        if (read < size) {
            int remain = size - read;
            while (remain > 0) {
                read = fis.read(tmpBuff, 0, remain);
                System.arraycopy(tmpBuff, 0, bytes, size - remain, read);
                remain -= read;
            }
        }
    }  catch (IOException e){
        throw e;
    } finally {
        fis.close();
    }

    return bytes;
}

在不使用中间位图的情况下将图像文件放入字节数组。