在Android中,可以使用以下方法来减小位图的大小:
方法1:使用BitmapFactory.Options来解码位图并压缩大小
// 1. 获取原始位图的尺寸
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.image, options);
int originalWidth = options.outWidth;
int originalHeight = options.outHeight;
// 2. 计算压缩比例
int reqWidth = 500; // 设置需要的目标宽度
int reqHeight = 500; // 设置需要的目标高度
int sampleSize = 1;
while (originalWidth / sampleSize > reqWidth || originalHeight / sampleSize > reqHeight) {
sampleSize *= 2;
}
// 3. 使用计算出的压缩比例解码位图
options.inJustDecodeBounds = false;
options.inSampleSize = sampleSize;
Bitmap compressedBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image, options);
方法2:使用Bitmap.compress()方法压缩位图
// 1. 加载原始位图
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
// 2. 创建一个空的输出流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// 3. 压缩位图到输出流
originalBitmap.compress(Bitmap.CompressFormat.JPEG, 80, outputStream);
// 4. 将输出流转换为字节数组
byte[] compressedBytes = outputStream.toByteArray();
// 5. 将字节数组转换为位图
Bitmap compressedBitmap = BitmapFactory.decodeByteArray(compressedBytes, 0, compressedBytes.length);
这些方法可以帮助你在Android中减小位图的大小。根据具体情况选择合适的方法来使用。