我有一个图像的 Uri,该图像是从图库中拍摄或选择的,我想加载并压缩为 75% 质量的 JPEG。我相信我已经通过以下代码实现了这一目标:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
Bitmap bm = BitmapFactory.decodeFile(imageUri.getPath());
bm.compress(CompressFormat.JPEG, 60, bos);

并不是说我把它塞进了一个名为 ByteArrayOutputStreambos 我需要然后将它添加到一个 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 类型字符串的构造函数)

10-06 06:51