java - 如何在 android studio(JAVA) 中压缩图像并将其存储在设备特定文件夹中
问题描述
我正在制作一个用于图像压缩的应用程序而且我是 Android 开发的新手......所以我的问题是我们在访问 JAVA 中的外部存储时遇到了一些问题......我已经尝试过
compile 'id.zelory:compressor:2.1.0'
compressedImage = new Compressor(this)
.setMaxWidth(640)
.setMaxHeight(480)
.setQuality(75)
.setCompressFormat(Bitmap.CompressFormat.WEBP)
.setDestinationDirectoryPath(
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES
).getAbsolutePath()
)
.compressToFile(actualImage);
好的...那么我可以使用 WEBP_LOSSLESS 而不是 WEBP 用于 Android API 30 吗?主要问题是如何设置存储在特定文件夹中的目的地?
解决方案
getExternalStoragePublicDirectory
列表替代品的红色弃用框:
Context#getExternalFilesDir(String)
应用程序可以通过迁移到、MediaStore
或 等替代方案来继续访问存储在共享/外部存储上的内容Intent#ACTION_OPEN_DOCUMENT
。
Bitmap.CompressFormat.WEBP
还包含一个弃用通知:
此字段在 API 级别 30 中已弃用。转而支持更明确的
CompressFormat#WEBP_LOSSY
和CompressFormat#WEBP_LOSSLESS
.
例如,这样的事情应该可以工作:
Context ctx = this;
File storeFolder = ctx.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
compressedImage = new Compressor(this)
.setMaxWidth(640)
.setMaxHeight(480)
.setQuality(75)
.setCompressFormat(Bitmap.CompressFormat.WEBP_LOSSLESS)
.setDestinationDirectoryPath(
storeFolder.getAbsolutePath()
)
.compressToFile(actualImage);
推荐阅读
- jquery - 如何使用一个按钮切换 IMG 删除和附加?
- html - 如何以不影响子 div 的方式赋予父 div 不透明度?
- sql-server - 从 Python 获取输入以在 SQL 查询中使用并将结果返回到屏幕
- amazon-web-services - 带有 Yahoo 域名的屏蔽域转发不适用于 AWS 托管的 Wordpress 网站(尽管未屏蔽确实有效)。我怎样才能解决这个问题?
- reactjs - 如何在 React JS 中的 MultiSelect 组件的 props 处分配一个数组
- html - iOS Safari/Chrome 不会向上滚动以在无线电输入上显示验证错误消息
- android - ParseLiveQuery 的问题
- c++ - C++ 模板声明不可见
- reactjs - history.createBrowserHistory 不是 Jest 测试中使用 React 的函数
- javascript - 如何加快自定义js中的窗口加载功能?