我们在大规模web应用维修器材图像媒体的数据库。高分辨率的JPG文件都是大(> 15MB),并不能提供下载以任何方式。现在,我们需要提供图像的获取详细信息(作物)的客户端(如放大功能)。客户端应该看到图像的downskaled版本和能够选择的它在满刻度模式(100%)观看的区域。

这怎么可能在最高效的方式(流量和CPU明智的)来实现?我们愿意接受任何解决方案,只要高分辨率图像文件仍然受到保护。该应用程序是在C#和.NET框架3.5的发展。

任何想法?由于事先!

有帮助吗?

解决方案

你需要做的

第一件事情就是压缩并上传到服务器之前水印图像。然后呈现那些给用户。这将需要最少的CPU资源,因为它们的图像将是静态的。

我个人然后再剪裁图像的全尺寸版本,并把他们沿侧压缩的。通过这种方式,客户端可以有充分的图像的视图沿侧(尽管压缩和水印)的全高分辨率版本一个小样本。

您可能要避免在即时图像处理,除非你有客户数目少且非常结实的服务器。

其他提示

我将作为该图像的低分辨率版本到浏览器和哈瓦一个客户端的作物的用户界面,将随后发送一个请求到其将裁剪掉的选择和将其发送回在高分辨率的服务器。

由于我对我父亲说了(不知道如何上网工程),如果你能看到它在网页上,你可以保存它,它只是一个如何做到这一点的问题。

有深变焦的AJAX版本,您可能会喜欢的 - 见龙:

http://livelabs.com/seadragon-ajax/gallery/

在用户呈现所述图像的低分辨率版本;然后他们可以放大,他们喜欢的任何部分。

首先我会预呈现所有全尺寸图像保存它们以压缩文件格式,水印的版本以及预渲染的低分辨率版本。

我将作为该低分辨率图像浏览。然后该用户的水印高分辨率图像来设置其裁剪。

目前确认的点我将具有裁剪非水印图像的第二专用图像处理服务器,通过裁剪后的图像与它发送到客户端的网络服务器。

这就是说,它仍然是可能的,来创建养殖裁剪部分和stiched在一起以创建非水印图像的全尺寸拷贝的客户端脚本。

  

不能提供用于   下载以任何方式。

是有分歧与:

  

客户端应该看到downskaled   图像的版本,并能   选择它在被观看的区域   满刻度模式(100%)。

...你允许在充分水库查看图像的所有区域来看,整个图像可以被缝合在一起。所以你有效(如果非常不便),使全尺寸可用的图像。

没有这种帮助你,尽管实现这一目标。

我会做这将是提供一种用72dpi的水印副本中选择图像的区域,以下载的方式。你可以扩展这个到原来的%,如果屏幕房地产是一个问题。让用户选择左上角和右下角坐标。然后使用类似的ImageMagick到该区域的复制出来的原来的被提供给用户。

如果您需要节约资源,你可以有用户从预定义电网下载,所以第一次网格坐标14:11选择,image_1411_crop.jpg被写入到文件系统,并在下一次坐标为选择时,文件已经存在。

编辑:了解您的一些意见上的其他答案...

不管你去生成和服务器端缓存,你要使用的带宽和流量相同数量的什么方式。一个300dpi的JPEG是300dpi的JPEG不管它只是生成或坐在上的文件系统。

您必须找出你是否需要节省CPU或磁盘空间。如果你有图像的百万演出和只有四十的用户,你能负担得起的CPU命中。如果你有图片四十演出和100万用户,去为HDD。

我最好使用 S3 用于存储。创建两个水桶(公共保护),给出了网址为保护桶的图像,一旦你已授权用户下载。 S3网址可制成与宁静的过期日期。

通过图片15兆字节你可能会意识到,你需要提前预先生成缩放/裁剪版本。

我会使用某种形式的所有,但原始文件的水印。 (如谷歌地图)

[编辑:添加深度缩放用于变焦]

检查出的Silverlight的 深度缩放 作为管理croping和缩放(演示)。 他们甚至有一个效用生成所有裁剪图像。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top