我正在研究哪些产品可以让您通过任意图像大小的HTTP API请求图像。 服务器在CDN之后,但是仍然需要能够处理公平的stream量并且可能是负载平衡的。
我一直负责编写这样的服务,但我想做一些尽职调查,看看有什么商业或开源的解决scheme。 谷歌并没有特别有用。 这可能是因为我一直在寻找错误的名词。
由于公司政策,第三方网站和服务是不可能的。
你可以用php / perl / python来使用ImageMagick。 它将允许您调整图像的大小。 唯一的问题就是你想caching图像,理想情况下。
为了使图像caching更加友好,您必须redirect到唯一的URL,并且必须保持每次redirect调用的状态。
例。
http://example.com/resize/image.php?image=example.jpg&width=640&height=320 ,它可以调整example.jpg的大小。 为了这个cachingimage.php应该返回一个URLredirect。 http://example.com/resize/static/example640x320.jpg
对于第二个URL,请确保您设置了正确的到期标题,以便CDN可以对其进行caching。 但是你也必须保持映射
http://example.com/resize/image.php?image=example.jpg&width=640&height=320到http://example.com/resize/static/example640x320.jpg
因为对于那个图像的每一个请求,image.php脚本都会被调用。
对于负载平衡的情况下的数据同步,你有一个NFS共享或使用rsync,如果延迟几秒钟是可以接受的,或使用file upload通过API(当然是安全的)来同步后端服务器之间的数据。
大小是指文件大小或图像的高度/宽度?
他们可能不一定允许“任意”的大小,但带宽减less代理(又名“加速器”)重新压缩图像文件来缩小它们,以及其他节省带宽的技巧。 维基百科有一个关于他们的网页和一个选项列表 。
如果意味着即时重新调整图像,那么基本上就是缩略图脚本的function。 他们中的很多人都是预先运行的,但还有一些是“即时”的。 例如,CPAN的Imager模块有一个示例CGI脚本,可将上传的图像缩放到200×200。
我find了一个名为mod_dims的开源Apache模块。 它符合我的大部分要求,而且速度很快。