首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大图像和javascript

大图像和javascript
EN

Stack Overflow用户
提问于 2012-10-02 20:26:10
回答 2查看 1.2K关注 0票数 1

我正在使用使用Three.js的pannellum (http://www.mpetroff.net/archives/2012/08/28/pannellum-1-2/),并且我正在使用它来处理本地文件。它适用于小文件,但我有的图像是5000 * 10000,并且它不加载它们。限制是什么,我如何在大图像中使用它。是否可以使用img标签加载图像并将该图像注入到应用程序中?在我发现的代码中,我有:

代码语言:javascript
复制
var panoimage = new Image();

我可以把它换成像他的那样的吗?

代码语言:javascript
复制
 var panoimage = document.getElementById('PanImage');

Image()的源代码在哪里?它是JS的一部分吗?我找不到关于这个班级的任何信息。

编辑1

我对pannellum做了以下更改,以便它从html上的图像加载图像,而不是动态加载图像。

在pannellum.htm中,我添加了以下html:

代码语言:javascript
复制
 <img id='panimage' src="000063.jpg" style="visibility: collapse;"/>

在pannellum.js中,我将第104行改为:

代码语言:javascript
复制
var panoimage = document.getElementById('panimage');

我还注释掉了

代码语言:javascript
复制
panoimage.onerror = function() { 

因此,在图像下载之后应该调用的代码立即被调用(因为当我们到达已经下载的点图像时)

我还注释掉了设置图像来源的行。

它不能下载图片。它只显示一个黑屏。

EN

回答 2

Stack Overflow用户

发布于 2012-10-02 21:03:53

我发现不同的浏览器都会采取措施,不渲染他们认为太大的图像(参见this question,我前段时间问道)。遗憾的是,这取决于用户代理。Canvas有时有一些抽象概念来处理这个问题,但上次我在DHTML中处理非常大的图像时,我不得不放弃(即使将它们切成小块,一段时间后它们也不会渲染)。

new Image()是一种旧的DOM方法,用于在document - documented here之外从头开始生成图像元素。你的第一行相当于:

代码语言:javascript
复制
var panoimage = document.createElement('img');

您用来替换它的行将有效地获取文档中已有的图像,而不是从头开始创建新的图像。

票数 1
EN

Stack Overflow用户

发布于 2012-10-03 16:15:57

查看Pannellum源代码,它似乎使用了Three.js的WebGL渲染器。WebGL对纹理大小(以及它可以渲染的图像大小)有限制。你可以在这里检查你的(“最大纹理大小”):http://jsfiddle.net/DA7wr/

我想到的另一件事是在wrong kind of texture parameters中使用非2次方图像大小,但由于Pannellum演示也有NPOT图像,我猜这不是问题所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12690211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档