小编mgw*_*mgw的帖子

通过REST API提供多种图像分辨率

我们正在开发一个REST API,用作我们的iOS和Android应用程序以及AngularJS Web应用程序的后端。为了优化性能,我们必须提供各种分辨率的图像。我正在寻找有关如何为客户端提供适合其设备分辨率的正确图像URL的指南。我可以想象三种可能性:

1.客户端具有确定图像的分辨率相关URL的逻辑。
REST API返回规范的图像URL:

{
   "user": {
      "id": 1,
      "image_profile": "https://cdn.mydomain.com/abcd.jpg"
   }
}
Run Code Online (Sandbox Code Playgroud)

然后,客户端知道如何更改URL以获得所需的分辨率。
例如:https://cdn.mydomain.com/abcd@2x.jpghttps://cdn.mydomain.com/w_100,h_100/abcd.jpg

这是基于这样的想法,即客户端可以准确知道图像的去向以及所需的大小和分辨率。缺点是客户端上的逻辑更多。例如,可以使用诸如http://cloudinary.com/的服务来实现。

2.服务器为每个映像提供不同的版本。
REST API返回所有可用的图像URL:

{
   "user": {
      "id": 1,
      "image_profile": {
         "url": "https://cdn.mydomain.com/abcd.jpg",
         "versions": {
            "mhdpi": "https://cdn.mydomain.com/abcd_mhdpi.jpg",
            "lhdpi": "https://cdn.mydomain.com/abcd_lhdpi.jpg",
            "2x": "https://cdn.mydomain.com/abcd@2x.jpg",
            "web": "https://cdn.mydomain.com/abcd_web.jpg"
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

在此解决方案中,客户端需要较少的逻辑,并且调整图像大小的实现与客户端无关。响应变得有点污染。

3.服务器根据用户代理(或任何其他参数)自动返回正确的图像
客户端可以在用户代理标头中指定其预期的分辨率(或可以?resolution=2x向每个请求添加类似的内容。
例如iPhone 5S (iOS 7.1),API的用户代理)会自动返回正确的图像:

{
   "user": {
      "id": 1,
      "image_profile": "https://cdn.mydomain.com/abcd@2x.jpg"
   }
}
Run Code Online (Sandbox Code Playgroud)

客户端忽略了分辨率问题,但是这种方法使响应的可缓存性降低,并且感觉最像魔术。

您能否建议其他解决方案,详细介绍所提出的解决方案的优缺点,并为我提供一些有关知名API如何处理此问题的资源?

rest android resolution image ios

5
推荐指数
1
解决办法
1502
查看次数

标签 统计

android ×1

image ×1

ios ×1

resolution ×1

rest ×1