为移动设备提供图像的最佳方法

问题描述 投票:0回答:1

我目前正在开发一个支持应用程序用户配置文件的后端系统。该系统与AndroidiOS应用程序集成。在移动应用程序中,有一个配置文件页面可显示用户配置文件图像,用于更改图像的按钮和其他详细信息。

图像必须采用JPEGPNG格式,并且最大尺寸限制为2MB

目前我的后端上传并以下列方式提供图像:

  1. 当图像作为multipart/form-data发送时,图像的元素被提取,插入或更新(如果已存在)在SQL database中,图像保存在资源目录中。
  2. 当在HTTP GET中请求图像时,它将作为Base64编码的data-uri发回;在浏览器中,我可以将其显示为HTML img标签src属性的一部分。

现在,移动应用程序开发人员已要求我更改服务(下载)过程,如(2)中所述。具体来说,他们要求回复服务器中静态图像的链接,而不是编码的Uri

现在,我已经阅读了一些关于data-uri使用的好点以及它如何使图像传递更加便携(我可以支持JPEGPNG而无需任何修改以支持浏览器上的不同格式);另一方面,我还读到了Base64编码图像与原始二进制图像相比可以变得更大,响应有效载荷如何变大,这意味着更多的飞行处理,并且在移动网络上可以证明速度慢。

现在,我不确定哪种方法最合适。移动应用程序只需在单击配置文件时显示图像。它们可以将图像保存为移动文件系统中的应用程序数据,也可以每次获取图像并显示它。

如果有人可以帮助回答以下问题,那将是多么伟大的事情:

  1. 我应该继续作为data-uri提供图像,还是更改后端以提供静态文件的链接?
  2. 根据我的使用案例,两种方法之间的性能是否有任何差异?
  3. 对于移动应用程序,与data-uri相比,使用链接到静态文件是否更有利(我的意思是更容易在代码和维护中实现)?
android ios image static-files
1个回答
1
投票

我应该继续将图像作为数据提供 - 或者,我是否更改后端以提供指向静态文件的链接?

我会继续作为数据 - uri提供图像。这意味着您可能会将数据从数据库中的blob中提取出来并将其发送出去。这允许在数据库中更新数据,而不必担心在服务器端更新静态图像。

根据我的使用案例,两种方法之间的性能是否有任何差异?

如你所说,静态图像可能更快,base64图像可能更大。但是,它可能也不是。您可能应该将图像限制为最大尺寸,和/或在上传图像时将其调整大小。我不会太担心,我写了几个应用程序,在几秒钟内读取数百个base64图像,没有明显的滞后。

对于移动应用程序,与data-uri相比,使用静态文件的链接是否更有利(我的意思是更容易在代码和维护中实现)?

使用data-uri可能更容易,因为移动应用程序需要将其转换为与ImageView一起使用的文件格式或者需要显示它的任何内容。

如果图像仅由用户在其设备上使用,您真的需要让它们上传吗? (如果您希望在他们拥有的每个设备上显示相同的配置文件图像,或者,它是否可以仅存储在应用程序数据存储或本地SQLite数据库中?

© www.soinside.com 2019 - 2024. All rights reserved.