我将使用S3存储用户上传的照片。显然,未经缩小调整,我不会向用户代理提供图像文件。但是,并非所有缩略图都应该是同一大小,因为有些缩略图比其他更大的预览图要小。所以,我考虑制作一个标准尺寸的系列,从最低16x16缩放到一些最高1024x1024。这是解决这个问题的好方法吗?如果以后需要新的尺寸,怎么办?你会如何解决?
我将使用S3存储用户上传的照片。显然,未经缩小调整,我不会向用户代理提供图像文件。但是,并非所有缩略图都应该是同一大小,因为有些缩略图比其他更大的预览图要小。所以,我考虑制作一个标准尺寸的系列,从最低16x16缩放到一些最高1024x1024。这是解决这个问题的好方法吗?如果以后需要新的尺寸,怎么办?你会如何解决?
如果你知道需要哪些不同的尺寸,并且对于所有图像都会使用所有尺寸,而且图像和尺寸数量不多,存储成本不高,那么预先生成不同大小并将它们存储在S3中是一个很好的方法。
以下是另一种方法,当我不想为每个图像预先生成和存储所有不同的尺寸,或者当我不知道未来会使用哪些尺寸时,我会使用这种方法:
将原始尺寸存储在S3中。
运行一个可以根据请求从原始图像生成任何所需尺寸的Web服务器。
在Web服务器前添加CDN(CloudFront)。
现在,您的网站或应用程序可以从CloudFront请求像/16x16/someimage.jpg这样的URL。第一次发生这种情况时,CloudFront将从您的Web服务器获取调整大小的图像,然后CloudFront将缓存该图像并为您提供服务,极大地减少了命中您的Web服务器的流量。
以下是一个可以调整大小任意URL图像并通过CloudFront提供服务的服务:http://filter.to
这听起来是一个不错的方法。根据您的应用程序,您应该定义一组缩略图大小,您始终要生成。但也要存储原始用户文件,以防您的要求稍后更改。当您想要添加新的缩略图大小时,您可以遍历所有原始文件,并从中生成新的缩略图。这个选项为您提供了后续的灵活性。