2010-09-07 103 views
1

我们想在Internet Explorer中显示非常大(50mb以上)的图像。我们希望避免压缩,因为压缩算法不是CSI会让我们相信它们和所产生的文件太有损的。网页浏览器中的大图像

因此,我们提出了两个选择:Silverlight Deep Zoom或基于Flash的解决方案(如Zoomify)。问题是这两个都需要转换为平铺输出和/或转换为特定文件类型(Zoomify支持单个专有文件类型PFF)。

我们想知道的是,如果存在一个解决方案,它将允许我们在未经过转换的情况下查看图像。 PS:我知道你可以编写一个应用程序来平铺图像(根据需要或在加载过程之后)并输出它们;但是,我们希望在不切断文件的情况下做到这一点。

回答

5

平铺的方法确实是正确的做法。

您的用户在开始查看图像之前不想下载50MB文件。您不希望花费带宽为每个只能查看图像一部分的用户提供50 megs。

如果您提供整个文件,用户最终将能够加载和查看它,但是它们大多数不能顺利运行。

除非您想使用服务器端库(如imagemagik或PIL)为每个用户提取图像的特定子集,否则没有简单的非平铺方式来为图像的一部分提供服务。你可能不想这样做,因为它会给你的服务器带来很大的负担。

或者,您可能会使用类似谷歌的地图工具来提供缩放和缩放。

http://webtide.wordpress.com/2008/08/27/custom-google-maps/

+0

这就是我想的,我只是想把它扔到SO。社区已经提出的一些解决方案已经把我吹走,所以我问,即使我99%肯定的解决方案:) – 2010-09-07 19:50:07

+0

我已经做了同样的事情,有时会发现非常有趣的建议。希望我有一个更好的解决方案亚... – 2010-09-07 23:29:20

+0

还值得注意的是(取决于您的图像的多样化),您可能能够使用谷歌的地图工具作为silverlight或flash的替代品。我已经用链接更新了答案。 – 2010-09-07 23:32:57

0

浏览器不会顺利加载50兆文件;如果你不把它砍掉,没有合理的方法来使它不会滞后。

-1

如果你不想瓷砖,你可以让服务器打开该文件,并在特定的呈现图像的显示在浏览器的屏幕大小的观点:这里可都在做一些评论请求缩放分辨率。这样,当有人只想获得图像的概述时,你不会发送50兆文件。也就是说,浏览器以像素为单位请求一组坐标和一个输出大小,服务器打开较大的图像并创建一个适合所需视图的较小图像,并将其发送回Web浏览器。

至于压缩,你说它太有损,但如果这就是你所看到的你可能使用错误的压缩算法或设置为你有的图像的类型。 jpg格式具有质量设置来控制损失,并且PNG压缩是无损的(解压后获得的像素是您压缩前的精确值)。所以考虑改变你用作压缩的东西,而不要仅仅依靠图像编辑器中的默认设置。

+0

任何压缩算法在特定点之后都将是有损的。你不能拿一个50MB的JPG格式缩小到合法的大小(大约1mb左右),而不会失去保真度。你可能会把它弄下来,但不是那么远。 – 2010-09-07 19:54:14

+0

你根本不对。 PNG压缩是无损的。就像GIF压缩一样。见http://en.wikipedia.org/wiki/Lossless_data_compression想想看......如果所有的压缩算法都是有损的,你如何认为你可以压缩一个500兆的文件并将其解压缩,从而获得原件? – GrandmasterB 2010-09-07 20:32:48

+0

我的意思是有一个大小的限制,你可以把它降低到没有切换到有损压缩。你可以采用一个50mb的PNG并将其设置为40mb。如果您将流缩减为zip,则可能会降至20mb。据我所知,不可能在没有有损压缩的情况下将50mb图像下降到1mb。 – 2010-09-07 22:56:21

0

看一看OpenSeadragon。要使图像可以与OpenSeadragon一起使用,您应该生成一个可缩放的图像格式,其中提到here。然后按照开始指南here