oss区分存储怎么把图片压缩后再上传?

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: oss区分存储怎么把图片压缩后再上传?

区分存储后,oss需要用uri进行上传,目前我是打开相册后获取uri,把图片uri转成bitmap,对bitmap进行压缩,然后再把压缩后的bitmap转成uri,绕了3步,请问有什么更简洁的办法吗?

public Uri compressImage(Bitmap bitmap,Integer i) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
int options = 100;
while (baos.toByteArray().length / 1024 > 200) {  //循环判断如果压缩后图片是否大于150kb,大于继续压缩
    baos.reset();//重置baos即清空baos
    options -= 10;//每次都减少10
    bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中
    long length = baos.toByteArray().length;
}
@SuppressLint("SimpleDateFormat") SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
java.util.Date date = new java.util.Date(System.currentTimeMillis());
//图片名
String filename = format.format(date);
File file = new File(getAttachActivity().getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), filename +"_"+i+".png");
file_de.add(file);
try {
    FileOutputStream fos = new FileOutputStream(file);
    try {
        fos.write(baos.toByteArray());
        fos.flush();
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
Uri uri = null;
if (file != null) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri
        uri= FileProvider.getUriForFile(getAttachActivity(), getPackageName() + ".provider", file);
    } else {
        uri=  Uri.fromFile(file);
    }
}
return uri;

}

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
9月前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
353 0
|
存储 安全 开发工具
oss加密存储
阿里云OSS为数据安全提供多种加密机制,包括服务器端的SSE-S3(AES-256透明加密)、SSE-C(用户管理密钥)和CSE-KMS(结合KMS进行密钥管理)。此外,OSS支持客户端加密SDK和HTTPS传输加密,确保数据在传输和存储时的安全。通过ACL、Bucket策略和访问密钥身份验证,实现权限控制与身份验证,全方位保障用户数据的安全性和隐私。用户可按需选择适合的加密方式。
476 2
|
22天前
|
存储 Kubernetes 对象存储
StrmVol存储卷:如何解锁K8s对象存储海量小文件访问性能新高度?
如何提升海量文件的数据读取速率,对于AI训练集管理、量化回测、时序日志分析等场景尤为重要。阿里云容器服务(ACK))支持StrmVol类型存储卷,基于底层虚拟块设备及内核态文件系统,显著降低海量小文件访问延迟。
|
22天前
|
存储 Kubernetes 对象存储
StrmVol 存储卷:解锁 K8s 对象存储海量小文件访问性能新高度
本文介绍了阿里云容器服务(ACK)支持的StrmVol存储卷方案,旨在解决Kubernetes环境中海量小文件访问性能瓶颈问题。通过虚拟块设备与内核态文件系统(如EROFS)结合,StrmVol显著降低了小文件访问延迟,适用于AI训练集加载、时序日志分析等场景。其核心优化包括内存预取加速、减少I/O等待、内核态直接读取避免用户态切换开销,以及轻量索引快速初始化。示例中展示了基于Argo Workflows的工作流任务,模拟分布式图像数据集加载,测试结果显示平均处理时间为21秒。StrmVol适合只读场景且OSS端数据无需频繁更新的情况,详细使用方法可参考官方文档。
511 144
|
1月前
|
存储 弹性计算 数据管理
阿里云对象存储oss怎么收费?存储费用+流量收费标准
阿里云对象存储OSS收费标准包含存储费、流量费及请求费等,支持按量付费与包年包月两种模式。标准型本地冗余存储按量付费价格为0.09元/GB/月,包年包月500GB预留空间优惠价118元/年。流量费仅收取公网出方向费用,忙时0.50元/GB,闲时0.25元/GB。更多详情可参考官方页面。
|
4月前
|
存储 前端开发 Java
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
### SpringBoot3 + Vue3 前后端分离的Java快速开发框架更新 本次更新主要包含以下内容: 1. **端口修改**:为避免与Minio存储服务冲突,后端启动端口从9000改为9999。 2. **添加存储支持**:集成Minio和阿里云OSS对象存储服务,详细配置请参考相关文档。 3. **短信服务**:接入阿里云短信服务,并增加模拟发送功能,方便本地测试。 4. **邮件发送**:引入邮件发送功能,支持简单文本邮件和带附件邮件。 5. **完善个人中心**:优化个人中心页面,提升用户体验。
238 85
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
|
1月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准:500G存储118元1年、
阿里云对象存储OSS 2025年收费标准涵盖存储、流量及请求等费用,支持按量付费与包年包月两种模式。标准型存储按量价格为0.09元/GB/月,包年包月如9元享40GB体验价。流量费仅收取公网出方向,忙时0.50元/GB,闲时0.25元/GB。此外提供多种存储类型(低频、归档等)及流量包优惠方案,未使用功能不收费。详情见阿里云OSS官网。
711 6
|
4月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准,存储、流量和请求等多个计费项
阿里云对象存储OSS收费标准涵盖存储、流量及请求费用,提供按量付费和包年包月两种模式。标准型OSS按量付费为0.09元/GB/月,包年包月40GB仅9元/年,500GB优惠价118元/年。流量费仅收取公网流出方向,内网流入流出免费。
336 13
|
5月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准:存储、流量和请求等多个计费项详解
阿里云对象存储OSS提供多样化的计费模式,涵盖存储、流量、请求等多项费用。存储费用方面,按量付费标准型为0.09元/GB/月,包年包月则有9元40GB等多种选择。流量费用仅对公网出方向收费,价格区间从0.25至0.50元/GB不等,支持按量付费与流量包抵扣两种方式。更多详情及精准报价,欢迎访问阿里云OSS官方页面。
5282 1
|
6月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准,存储、流量和请求等多个计费项
阿里云对象存储OSS提供按量付费与包年包月两种计费方式,涵盖存储、流量、请求等费用。标准存储按量付费0.09元/GB/月,包年包月40GB起售,价格9元/年。公网流量出方向收费,内网及上传免费。具体费用视使用情况而定,详情见官网。
811 0