android - API - 适用于 iOS 和 Android 的图像尺寸(不同屏幕尺寸)- 优化

标签 android ios json image api

在一个应用程序上工作,该应用程序将各种尺寸的图像显示为网格、列表(类似 Instagram)、占据整个屏幕的图像。

例。 - 你可能有一个 GridView 图像(不是很大),但同样的图像也显示在几乎与整个屏幕一样大的另一个屏幕上。这就像这个的放大版本。还有这些图像的较小缩略图。

与后端团队合作,提出最佳解决方案。

问题:

  1. 针对不同屏幕尺寸处理图像的最佳方式是什么?我知道 instagram 会发送高分辨率低分辨率和缩略图的 URL。

  2. 我们是否需要为每张图片提供多种尺寸?例子。每个图像的 GridView (我们需要 1x、2x 还是 3x)?还是一种尺寸可以适用于所有手机屏幕尺寸,我们可以只在代码中设置缩放模式?即使对于较小的屏幕尺寸也可以吗?对于较小尺寸的手机来说,这会不会是一种糟糕的体验,因为它们需要图像。对我来说,这不是最佳选择,因为像 SE 这样的小型手机不具备与 iPhone 8 plus 相同的处理能力。

  3. 如果我们使用相同的 API 来为 iPhone 和 Android 提供服务 - 既然 Android 需要处理更多的图像尺寸,那么这个 API 如何能用于 Android。

任何指导将不胜感激。

最佳答案

前提:

You are talking about images from web server. Not svgs, not interface graphics. There's no official documents of this field, just suppositions and results of experience. I'm sharing mine.

If you meant interface graphics, there are official documentations from Apple and Google. If you meant svgs, they're automatically scaled. If you intended to have answer for those, please edit the topic or open new ones

一个解决方案可能是改变 JPG 的质量,而不是仅对图像大小起作用。

您可以为小缩略图(头像、照片图标)使用 ~200x~200 的全质量图像,这对于所有设备尺寸、分辨率和型号都没有问题,而且不会太重。

然后,对于更大的预览/打开的完整图像,您可以保持相同的尺寸(原始尺寸,或您定义的最大尺寸)但是,使用图像的两个版本:一个 JPG 质量较低的版本(以便它可以加载速度快,消耗字节少,显示图片内容),另一个保持原画质(需要加载和字节,但只按需显示)。

要选择正确的小缩略图值(约 200 像素),请检查您拥有的较大的缩略图大小。如果你有一个最小分辨率为 96x96 的头像气泡,将它乘以 3 (96*3=288) 就得到了大小! 的确,最小的分辨率屏幕只需要一张 96x96 的图像,但是,考虑到这些数字很小,差异并不重要(另外,因为我们谈论的是照片而不是矢量图像,如果您手动缩放或如果您将缩放留给设备,结果是一样的)。

我从 Google 找到了一些文档,其中解释了一些关于图像格式以及如何减小下载大小的内容:https://developer.android.com/topic/performance/network-xfer.html 他们说要使用 JPEG、PNG 或 WebP,并展示了一些选择正确格式的示例和指南 Format choosing by Google

关于android - API - 适用于 iOS 和 Android 的图像尺寸(不同屏幕尺寸)- 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46855473/

相关文章:

java - 如何创建通知 channel 组?

android - 如何在没有 setMyLocationEnabled true 的情况下显示当前位置蓝点?

ios - 不可用时隐藏 iAd

php - 如何使用这样的脚本或文本编辑器批量更新位于 .html 文件中的基本一对一 key 结构?

ios - 如何从 JSON 加载并解析到 iOS 5 上的 tableView

java - 当 layoutManager 的 scrollToPositionWithOffset 时项目的 recyclerView 之间空白

android - 为什么我们应该使用 aysntask 或 service 而不是新线程

javascript - Omniture/Adobe Analytics 跟踪破坏了 Safari 中的外部链接

iOS 8 : UIAlertController Default Style Color

javascript - 如何解析JSON多维数组