我是不是需要在 json 响应中返回 ios 的图像尺寸?

Posted

技术标签:

【中文标题】我是不是需要在 json 响应中返回 ios 的图像尺寸?【英文标题】:Do i need to return back the image dimensions for ios in json response?我是否需要在 json 响应中返回 ios 的图像尺寸? 【发布时间】:2015-12-17 09:13:11 【问题描述】:

我已经建立了一个网站,可以在文件系统上存储 4 种不同大小的图像。它保留原始文件大小、中、拇指、小图像,并在上传时调整它们的大小。

然后我们创建了 web api 以允许我们构建 ios/android 应用程序。

在构建 api 时,我们的海外开发人员要求提供图像尺寸以及图像文件名。在计算图像大小并将其保存到数据库方面花费了大量工作。

 "imagefilename" : "someimage.jpg", "LargeimageHeight" : "1000",  
"LargeimageWidth" : "500", "mediumImageHeight" : "500",
"mediumImageWidth" :       "250",
"smallImageHeight" : "100", "smallImageWidth" : "60" 

我们在网站上拥有的大量图像部分使它成为一项任务,我想知道这是否真的需要。我不是 ios 开发人员,但不确定为什么需要保存或确实需要图像的附加尺寸。

我以为 ios 有图片功能 (@3x) (@2x) (@3x) ??

还是我为 ios 使用 1 个特定的文件夹图像大小??

对于代码需要知道图像尺寸以获得最佳结果的图像,这是否总是在 ios 世界中发生?

谢谢

【问题讨论】:

【参考方案1】:

如果您的 iOS 应用程序以流式布局(如 pinterest 样式)显示图像,您必须返回图像尺寸。否则我认为它没有必要

【讨论】:

实际上是的,它是一种带有 2 列产品列表的 pintrest 样式。但这只是使用 pinterest 风格的 1 个部分。也许我们不需要为所有其他 api 这样做。谢谢你【参考方案2】:

    是否需要返回图片尺寸:

    简答:否。您可以使用UIImage 加载图像,并调用image.size.heightimage.size.width

    长答案:也许,取决于您的应用程序的界面设计,如果每个图像都有不同的尺寸,则在加载图像之前可能会影响性能获得它的大小(并且可能进行自动布局并让它在屏幕上呈现)。您可能会遇到滚动速度问题,但这取决于具体的设计和要求。

    什么是@2x@3x iOS 图片功能

    iPhone 和 iPad 屏幕具有不同的像素密度(非视网膜、视网膜和视网膜 iPhone 6+ 屏幕)。如果您有本地图像,存储在手机上,它可以自动预加载具有正确比例的图像,只需提供图像的基本名称,如果您为每个资产添加正确的后缀,例如 name@2x 等。

    遗憾的是,它对远程图像不起作用 see this answer。您必须检查自己的比例并加载正确的图像,或加载一个大文件,然后在设备上调整其大小。

【讨论】:

【参考方案3】:

您应该考虑在 API 响应中提供维度。

思考设计: 当您扩展您的应用程序以同时拥有许多图像时,或者当您将应用程序分发到多个设备时,您可能会意识到这种优势。您的 iphone 4 最终可能会下载用于 iPhone 6S 的图像(更糟糕的是,图像),等等。如果反过来,想想就更可怕了。

设备要求它最适合的图像怎么样?

关于图像的缩放,Bram De Geyter 是正确的 - 您可以渲染设备上的任何内容,而不是从服务器获取正确的内容。因此,让您的 API 为您提供正确的维度是唯一的解决方案。

我已经描述了整个image loading from API approach in my blog here。

【讨论】:

以上是关于我是不是需要在 json 响应中返回 ios 的图像尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

RESTful 响应如何在 Yii2 中返回 JSON 而不是 XML?

在 Spring Boot OAUTH2 中返回 RESTful/json 响应而不是登录表单

在ios中获取json响应而不是php

从 JSP 返回 JSONP 而不是 JSON

从 JSON 响应加载第二个 URL,而不影响 iOS 中的初始 JSON 绑定

如何为未经授权的 AJAX 调用而不是登录页面返回 JSON 响应作为 AJAX 响应?