0

我无法解决这个问题,尽管它一定只是一个非常小的语法问题,正如您将看到的那样:事实上,我正在寻找的只是一小段语法,除非我打算做的事情是不可能的(但是我看不出它为什么不可能......)。

我已经编写了一个函数来在服务器端将图像编码为 Base64,因为我想将大量图像存储到一个数组中:

因此,使用 Base64,我可以将图像下载为可以组织成数组的普通字符串,然后在我选择了正确的图像和正确的时刻时将它们放入对象中,而无需再次引用服务器,这样用户无需等待。

然后我做这样的事情:

  • 第一阶段:

    function download64(imageUrl) //->string { // 请求服务器将 'imageUrl' 作为 base64 字符串发送 var tx = DoTheJob(); // ...通过ajax连接并将base64转换的图像作为字符串下载到var 'tx' return tx }

在这个阶段,我将图像保存在客户端的“tx”Base64 字符串中。稍后我想在名为“cadre”的 div 中显示我的图像,所以我执行以下操作:

  • 第二阶段:我只需调用“display64”函数将我的图像设置为屏幕上的“干部”div-object:

    display64("干部",tx);

使用此功能:

function display64(destinationDiv,imgText64)    //->void
{  // display 'imgText64'   into destinationDiv
  var oImg = "<img alt='' src='data:image/jpg;base64," + imgText64 + "'>";
  var x = document.getElementById(destinationDiv);
  x.innerHTML = oImg;       
}

现在显示图像。不幸的是,这只适用于 Firefox,因为 Internet Explorer 8 无法读取 32Kb 以上的 Base64 图像!在我的企业中,我们只使用 IE 8!

然后我放弃了我的 base64 编码器并决定将图像作为二进制字符串获取,尽管我最初遇到了 nul 字符的问题,但我可以管理它。

现在,我的二进制字符串包含源 JPG 文件的精确副本(包括我在服务器端编码然后在客户端恢复的零)。所以,我现在需要的是简单的函数'displayBin',但我在网上找不到语法:

function displayBin(destinationDiv,imgTextBin) //->void
{  // display 'imgTextBin' into destinationDiv  
   var oImg = "<img alt='' src='??????? + imgTextBin + "'>"; // What's the syntax here, please? 
   var x = document.getElementById(destinationDiv);
   x.innerHTML = oImg;  
}

任何人都可以帮忙吗?非常感谢。

4

1 回答 1

0

如果我理解您的问题,您想要存储图像,这样您就不必重新连接服务器。这样做的一种方法是预加载图像,例如var img=new Image; img.src='path';您可以将所有图像加载到一个数组中,然后您可以根据需要将它们添加到页面中。图像预加载有很多内容,因为这似乎是您想要完成的。

于 2012-04-16T14:35:04.670 回答