Bitmap compress

本文探讨了在Android应用中优化图片上传的策略,包括图片裁剪和压缩,以减少流量消耗并保持高质量。通过使用Bitmap.compress方法调整图片大小,实现高效的图片管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 相机像素越来越高,出现了很多高分辨率的图片。在一些Android应用中,需要用户进行图片的上传,这时候就要考虑 清晰度还有流量消耗等问题。

应用中考虑从两个方面进行优化:1.是图片裁剪,只上传裁剪后的图片。2 压缩大图片,往往裁剪后的大小依然十分可观,故而还需要进行相应的压缩。

  	ByteArrayOutputStream stream = new ByteArrayOutputStream();  
        photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
       photo的类型就是我们处理过后的bitmap类型,调用compress方法进行压缩,各个参数的意义也较为简单。  其中100是控制压缩比率的,100的话相当于没有进行压缩。

        以后用到的有关bitmap相关的方法都会在这里进行描述。 -——————

        

### 使用 `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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值