我想将JPG文件发送到我的服务器,其大小限制固定为500KB。永远不要将此文件写入手机存储空间(包含机密数据)。
我的输入是从相机返回的字节数组。
目前这就是我正在做的事情
ConfigFileApplicationListener
如何使用此大小限制创建ApplicationContext
?我可以缩小图像质量。
答案 0 :(得分:0)
这可以使用位图
来实现我只需要使用带有ByteArrayOutputStream的Bitmap来压缩我的图片,但我找不到一种方法来获得输出中的精确尺寸。
public static byte[] compressCapture(byte[] capture, int maxSizeKB) {
// This should be different based on the original capture size
int compression = 12;
Bitmap bitmap = BitmapFactory.decodeByteArray(capture, 0, capture.length);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, compression, outputStream);
return outputStream.toByteArray();
}
public Observable<User> uploadPicture(byte[] pictureBytes) {
RequestBody pictureFormatted = RequestBody.create(MediaType.parse("image/*"), compressCapture(pictureBytes, 500));
MultipartBody.Part.createFormData("confidentialPicture", "confidentialPicture.jpg", pictureFormatted);
return api.uploadPicture(picturePart);
}