我已经添加了权限,怎么使用你教我的办法压缩图片呢
时间: 2024-03-22 11:38:36 浏览: 54
可以使用 BitmapFactory.Options 对象进行图片压缩。以下是一个示例代码:
```
if (imageUri != null) {
try {
// 获取文件输入流
InputStream inputStream = getContentResolver().openInputStream(imageUri);
// 设置 BitmapFactory.Options 对象
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; // 只解码图片边界,不加载图片
BitmapFactory.decodeStream(inputStream, null, options);
inputStream.close();
// 计算采样率
final int maxWidth = 1024; // 假设最大宽度为 1024 像素
int width = options.outWidth;
int height = options.outHeight;
int sampleSize = 1;
while (width > maxWidth) {
width /= 2;
height /= 2;
sampleSize *= 2;
}
// 设置 BitmapFactory.Options 对象
options = new BitmapFactory.Options();
options.inSampleSize = sampleSize; // 设置采样率
inputStream = getContentResolver().openInputStream(imageUri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);
// 压缩图片
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);
byte[] bytes = baos.toByteArray();
String imageString = Base64.encodeToString(bytes, Base64.DEFAULT);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
```
这个代码会对图片进行采样,即只加载图片的边界,根据采样率计算出需要加载的图片大小。这样可以有效地减小图片的内存占用。
阅读全文