我有一个图像的 Uri,该图像是从图库中拍摄或选择的,我想加载并压缩为 75% 质量的 JPEG。我相信我已经通过以下代码实现了这一目标:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Bitmap bm = BitmapFactory.decodeFile(imageUri.getPath());
bm.compress(CompressFormat.JPEG, 60, bos);
并不是说我把它塞进了一个名为
ByteArrayOutputStream
的 bos
我需要然后将它添加到一个 MultipartEntity
以便将它 HTTP POST
到一个网站。 我想不通的是如何将 ByteArrayOutputStream 转换为 FileBody。 最佳答案
使用 ByteArrayBody
代替(自 HTTPClient 4.1 起可用),尽管它的名称也采用文件名:
ContentBody mimePart = new ByteArrayBody(bos.toByteArray(), "filename");
如果您坚持使用 HTTPClient 4.0,请改用
InputStreamBody
:InputStream in = new ByteArrayInputStream(bos.toByteArray());
ContentBody mimePart = new InputStreamBody(in, "filename")
(两个类也有采用附加 MIME 类型字符串的构造函数)