java - 如何使 Uri 图像更小?
问题描述
我是java新手,我正在努力研究如何在将图像上传到firebase之前调整图像大小。
我已经阅读并尝试了堆栈中的许多建议,但我没有任何工作要做。
我只需要图像大小为 100 KB。该图像将仅用于名称旁边的个人资料图片 (40dp*40dp)。所以质量不需要那么好。所以我不是在寻找任何花哨的压缩,只是一种减少图像的简单方法。就像减少宽度和高度一样,只能说 80dp*(纵横比)。
我从这样的用户电话中获取图像:
private void openFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
imageURI = data.getData();
Picasso.with(this).load(imageURI).fit().centerCrop().into(imgView);
}
}
并将其上传到数据库:
private void uploadFile() {
if (imageURI != null && getUserId != null) {
final StorageReference ref = mStorage.child(getUserId);
UploadTask uploadTask = ref.putFile(imageURI);
}
我尝试了这样的扩展,但没有帮助
private void uploadFile() {
if (imageURI != null && getUserId != null) {
final StorageReference ref = mStorage.child(getUserId);
Uri test = new Compressor() {
public Uri compressToFile(Uri imageURI) {
return imageURI;
}
@Override
public String getMessageEncoding() {
return null;
}
@Override
public OutputStream compress(OutputStream os) throws IOException {
return null;
}
}.compressToFile(imageURI);
UploadTask uploadTask = ref.putFile(test);
}
我发现的所有答案都没有 Uri 的图像,所以我有点困惑。我可能需要该图像作为 Firebase 的 Uri。任何人都可以向我展示如何执行此操作的分步指南。感谢所有帮助!
解决方案
您可以为此目的使用 Imagecompressor 库 https://github.com/zetbaitsu/Compressor
推荐阅读
- python - 使用 Flask-RestX 制作 RESTful API 时遇到问题:“规范中没有定义操作!” 和“404”
- wpf - 如果代码中的 WPF XAML 模板包含事件处理程序,则会失败
- python - Tkinter 按钮回调 Lambda 意外结果
- java - org.xml.sax.SAXParseException;cvc-elt.1:找不到元素“数据”的声明
- php - 从 mysqli 获取长文本并显示
- kubernetes - 我可以在 Fargate 上的 EKS 中使用 EBS 吗?
- android - 当 textSize 相同时,TextView 的高度因文本而异。为什么?
- spring - Spring data with R2DBC(Mysql) 一对多关联示例
- vagrant - 如何在 Vagrant 上创建隔离网络?
- python - RuntimeWarning:在逻辑回归中使用梯度下降时除以登录时遇到的零