在客户端上生成缩略图

时间:2016-09-29 00:07:55

标签: ios image amazon-s3 screenshot thumbnails

我和我的团队正在构建一个iOS应用程序。我们允许现场技术人员上传他们在技术设备上解决的某些问题的图像。当这些图像上传到S3时,放大(因此保持相对较高的质量)非常重要。

最近我们决定添加缩略图,因为当其他人浏览iOS应用程序时,它会快得多,而不是下载1.5-2.5mb的图像。

我的同事认为处理此问题的最佳方法是在iOS中生成200-500kb缩略图,然后将图像和缩略图上传到s3。

我表达了我的担忧,我们的一些技术人员可能在世界某些地方,互联网速度慢,数据使用有限。因此,在设备上进行所有这些额外的工作并上传对我来说毫无意义。然而,该团队认为这是一个很好的解决方案,并将继续前进我已经向他们展示了如何在服务器上自动生成S3和Lambda缩略图的简单示例...允许我们使用额外的带宽上传更高保真度的图像,或者通过上传更少来提高应用程序的速度。有时用户可以上传多达100张图片......这意味着额外的20-50mb ......

无论如何,我想听听一些关于你们如何认为处理这个问题的最佳方法的答案,主要是为了我自己的理智检查。

2 个答案:

答案 0 :(得分:2)

我不完全理解你的项目的复杂性,但根据经验,我有一个词给你 - Cloudinary 。与S3相反,S3是一种通用云存储解决方案,cloudinary是设计的来处理图像。

我们每天有200,000次点击在线分类应用,每天处理数万张照片。 cloudinary为我们的所有需求提供了非常均衡的解决方案。我们从用户的移动和桌面设备上传,这些图片的书签,基于CDN的服务和缩略图生成。

我是否提到他们有内置缩略图 ?它们还有许多其他功能,包括

  • 调整大小和裁剪
  • 优化的JPEG自定义裁剪
  • 脸部缩略图
  • 旋转圆形缩略图
  • 缩放效果和缩放图像叠加
  • 水印图片
  • 优化的WebP
  • 叠加,边框,阴影文字叠加,边框,阴影等。

管理控制台也非常棒,所有上述功能都可供您通过云进行配置。它几乎适用于任何应用程序(我们在内部Ruby,Go,NodeJS服务,我们的Web应用程序以及我们的iOS和Android应用程序中使用它)。 我没有向你出售Cloudinary,但我可以保证,如果它是我需要的基于图像的服务,我会在S3之后的任何一天去Cloudinary。像EBay和TED等主要参与者使用它来满足他们的图像要求。

答案 1 :(得分:-1)

  

最近我们决定添加缩略图,因为它会更快   当其他人浏览iOS应用程序时,而不是下载1.5-2.5mb   图像。

我在网络延迟是一个因素的另一个并行宇宙中遇到了类似的问题。我最终提交了设备中的两张图片,缩略图和原始图片。

  1. 首先将缩略图与元数据一起发送到服务器。这使得有效负载保持较小,并允许应用程序的用户继续拍照并进行注释。

  2. 原始图像也已提交给服务器但在后台任务中。将原始图像放在服务器上是提供稍后所需的缩放和其他操作的关键。

  3. 正如您可以想象的那样,这会产生一些不那么“happy paths”,因为原始图像可能无法供其他用户使用。但是,在原始图像完全提交之前,它们至少可以进行预览。

      

    这是一个好习惯吗?

    我不能说它是,但它肯定是妥协。

      

    这是个好主意吗?

    这取决于您的使用案例。我需要在继续之前几乎立即上传元数据和小缩略图,但我还需要将原始数据保留在服务器上以供将来处理。