在 Firebase/Android 聊天应用程序中发送和接收大图像文件的最佳方法是什么
What is the best approach to send and receive the big image files in a Firebase/Android chat app
我正在开发一个使用 Firebase 实时数据库和存储的聊天应用程序。
目前我使用这种方法发送和接收图像:
- 在发送按钮上单击:画廊意向 >> 将图像上传到 Firebase 存储 >> 将图像 URL 存储在 Firebase 数据库的消息子项中。
- 在适配器中,当类型设置为 "image"在消息的子项中时,我使用 Picasso 及其离线功能将图像检索到 ImageView。
问题是高质量图像超过 1 MB。一旦它们被发送,应用程序在滚动聊天时变得非常慢,然后一些图像从 ImageView 中消失。
有什么办法可以让图片找回更顺畅更快?
如果您使用的是 Glide,那么您可以调整图像的大小和比例。假设您正在使用 Glide 4.x
,请使用以下选项之一:
首先是使用 override(x, y)
方法将图像调整为特定尺寸:
GlideApp
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.override(600, 200)
.into(imageViewResize);
其次是将 override(x, y)
与 centerCrop()
一起使用。这是一种裁剪技术,可以缩放图像以填充请求的边界,然后裁剪多余的部分。
GlideApp
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.override(600, 200)
.centerCrop()
.into(imageViewResizeCenterCrop);
第三种方法是使用 fitCenter()
,这是一种缩放图像的裁剪技术,使两个尺寸都等于或小于 ImageView
的请求范围。图像将完整显示,但可能不会填满整个 ImageView
。
GlideApp
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.override(600, 200)
.fitCenter()
.into(imageViewResizeFitCenter);
我正在开发一个使用 Firebase 实时数据库和存储的聊天应用程序。
目前我使用这种方法发送和接收图像:
- 在发送按钮上单击:画廊意向 >> 将图像上传到 Firebase 存储 >> 将图像 URL 存储在 Firebase 数据库的消息子项中。
- 在适配器中,当类型设置为 "image"在消息的子项中时,我使用 Picasso 及其离线功能将图像检索到 ImageView。
问题是高质量图像超过 1 MB。一旦它们被发送,应用程序在滚动聊天时变得非常慢,然后一些图像从 ImageView 中消失。
有什么办法可以让图片找回更顺畅更快?
如果您使用的是 Glide,那么您可以调整图像的大小和比例。假设您正在使用 Glide 4.x
,请使用以下选项之一:
首先是使用 override(x, y)
方法将图像调整为特定尺寸:
GlideApp
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.override(600, 200)
.into(imageViewResize);
其次是将 override(x, y)
与 centerCrop()
一起使用。这是一种裁剪技术,可以缩放图像以填充请求的边界,然后裁剪多余的部分。
GlideApp
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.override(600, 200)
.centerCrop()
.into(imageViewResizeCenterCrop);
第三种方法是使用 fitCenter()
,这是一种缩放图像的裁剪技术,使两个尺寸都等于或小于 ImageView
的请求范围。图像将完整显示,但可能不会填满整个 ImageView
。
GlideApp
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.override(600, 200)
.fitCenter()
.into(imageViewResizeFitCenter);