bitmap.compress(Bitmap.CompressFormat.JPEG, 50, outputStream);
时间: 2024-05-27 19:13:08 浏览: 148
This code compresses a bitmap image in JPEG format with a compression quality of 50 and writes the compressed data to an output stream. The output stream can be a file, network socket, or any other type of output destination. The lower the compression quality (i.e., the higher the compression level), the smaller the resulting file size but the lower the image quality. Conversely, a higher compression quality (i.e., lower compression level) results in a larger file size but better image quality.
相关问题
Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
这个错误是由于你在对一个空对象进行操作,导致调用了一个空对象的方法。在这个例子中,你正在尝试对一个空的 Bitmap 对象进行压缩操作,因此发生了这个错误。你需要先检查 Bitmap 对象是否为空,然后再进行相应的操作。可以使用如下代码进行判断:
```
if(bitmap != null){
// 对 Bitmap 对象进行操作
} else {
// Bitmap 对象为空,进行相应的处理
}
```
这样就可以避免调用空对象的方法导致的错误。
bitmap.compress
### 使用 `Bitmap.compress` 方法的详解
当处理图像数据并希望将其保存至存储设备时,`Bitmap.compress` 是 Android 中常用的方法之一。此方法允许开发者指定压缩格式、质量以及输出流。
#### 压缩选项与参数解释
- **CompressFormat**: 支持三种主要格式——PNG、JPEG 和 WEBP。不同格式适用于不同类型的应用场景;例如,对于照片通常推荐使用 JPEG 格式[^2]。
- **Quality (quality)**: 这是一个介于 0 到 100 的整数值,表示压缩的质量水平。较高的值意味着更好的画质但也可能更大的文件尺寸。需要注意的是,在 PNG 或 WebP 无损模式下设置该参数无效。
- **OutputStream (out)**: 输出目标可以是任何实现了 OutputStream 接口的对象,比如 FileOutputStream 来写入外部储存中的文件。
下面给出一段具体的代码实现:
```java
// 创建一个 File 对象指向想要保存的位置
File file = new File(context.getExternalFilesDir(null), "compressed_image.jpg");
try {
// 打开文件输出流准备写入
FileOutputStream fos = new FileOutputStream(file);
// 调用 compress 函数执行实际操作
boolean success = bitmap.compress(Bitmap.CompressFormat.JPEG, 85, fos);
// 关闭资源释放
fos.flush();
fos.close();
} catch (IOException e) {
Log.e("TAG", "Error during compression or saving image.", e);
}
```
上述例子展示了如何利用 `compress()` 将位图转换成 JPEG 文件,并设定适当的质量因子以平衡视觉效果和文件体积之间的关系。
#### 计算压缩后的预期大小
虽然无法精确预测最终得到的具体字节数量,因为这取决于源图片的内容复杂度等因素,但可以根据原始分辨率乘以每像素平均占用空间来估算大致范围。不过值得注意的是经过有损压缩算法处理之后的实际结果可能会显著低于理论最大值[^4]。
阅读全文
相关推荐













