如何动态缩放非常大的图像
How to scale very large images dynamically
我有一个非常大的图像(500+MB),我想在网页上显示。我希望能够缩小到一次可以查看整个图像,或者放大到只能看到图像的1%。
据我所见,通常的方法是将图像分割成瓦片,并用类似的东西进行渲染http://www.dimin.net/software/panojs/
然而,如果我将图像分割成500个瓦片,并且有人将其完全放大,仍然需要降低500MB。
有没有一些模块我可以用来动态生成只有足够大的瓷砖来显示用户当前缩放级别的最大细节?
例如,如果图像是19200 x 10800像素,并且有人在1920 x 1080的监视器上观看它,那么我只想发送1920 x 10800的图像。但如果他们放大到200%,那么我想发送一张1920 x 1080的图像,显示原始图像的四分之一。
我还需要一个覆盖和滚动的能力(通过拖动图像)。
如果有人能给我指明正确的方向,那就太好了。
您将希望在node.js中使用GraphicsMagick这样的库,这里的示例是:
var gm = require('gm');
gm('/path/to/image.jpg')
.resize(353, 257)
.autoOrient()
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});
您的下一步将是创建一个可以请求适当衍生产品的服务,因此您可能会有以下请求:
http://img.mysite.example/product/preview
http://img.mysite.example/product/medium
当用户部分放大时,"预览"图像可能是完全缩小的100px版本,而"中等"图像则可能是1920px的衍生图像(然后使用平铺进行详细缩放)。然后更改客户端应用程序以请求所需缩放级别的适当URL。
处理500个MiB图像(或该区域中的任何图像)时,您可能希望提前执行此缩放,并缓存或永久保存生成的图像。
您应该阅读以下内容:https://stackoverflow.com/a/17550376/2558648我觉得更好,
如果你使用你的想法,很多客户端浏览器会很快失效(很抱歉我的英语不好),客户端会内存不足。
使用假地图,您将只显示客户端想要的地图。
- 通过javascript操作图像,非常简单
- 非常大的图像显示渐进
- 启动网站时,页面和图像加载速度非常慢
- 如何使用javascript和jquery-file-upload检测损坏的非常大的图像文件
- JQuery 灯箱插件:缩放非常大的图像以适应屏幕
- 如何在加载非常大的图像时显示加载屏幕
- 生成图像的速度非常快
- 使用JSON的iPad,平板电脑和手机的图像加载非常缓慢
- 使用javascript点击图像更改非常快
- HTML 5 画布:在游戏中使用绘制图像会使循环非常慢
- 非常简单的图像滑块自动滑动
- 如何从图像数组创建一个非常简单的jquery幻灯片
- 需要非常非常快速地将画布的内容设置为图像
- 如何动态缩放非常大的图像
- 改善加载时间非常长的滚动页面的图像
- iPad上的HTML2Canvas空白图像和笔记本电脑上的非常低质量的图像
- 网站上的3D图像非常酷,但这背后的技术是什么?
- Javascript -包括点击图像并使其消失(非常初学者)
- 在iOS上,我如何在web应用的客户端调整一个非常大的图像的大小
- 为什么每次更改或重新加载页面时,我的3英尺图像都变得非常大?