2012-04-16 54 views
0

我不能通过这个问题得到尽管它必须是只是一个很小的语法问题,你会看到一个javascript二进制字符串:其实,我在寻找一个刚一小段语法,除非我打算做的事情是不可能的(但我看不出为什么它不应该是不可能的......)。HTML语法未知显示包含JPEG图像

我写一个函数的图像编码为Base64编码的服务器端,因为我想许多图像保存到一个数组:

因此,使用Base64我可以下载图片作为我可以安排在普通字符串一个数组,然后把它们放到一个对象只是当我选择了正确的图像和合适的时机,而不必再次提及到服务器,使用户不必等待。

然后我做这样的事情:

  • 第一阶段:

    功能download64(IMAGEURL)// - >字符串 {//向服务器发送 'IMAGEURL' 作为base64 string var tx = DoTheJob(); // ...通过Ajax连接并下载用base64转换的图像作为无功串“TX” 回报TX }

在这个阶段,我抱着图像中的“TX”客户端的Base64字符串。 稍晚我想在所谓的“干部”的div来显示我的形象,所以我做到以下几点:

  • 第二阶段: 我只需要调用“display64”功能来设置我的形象进入在屏幕上的 “干部” DIV-对象:

    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编码器,并决定将图像作为二进制字符串,我可以管理虽然我最初曾与空字符问题获取。

现在,我在这里与包含源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; 
} 

谁能帮助?非常感谢。

+0

如果浏览器不支持数据url,你不能做你想做的。期间,您将不得不使用服务器端脚本(例如在php中)来生成映像,并且img元素的src应该指向服务器端脚本。但你可以将二进制代码附加到一个元素,并希望它的工作原理... – mpm 2012-04-16 14:27:12

回答

0

如果我明白你的问题你是想保存图像,所以您不必连接回来的服务器。执行此操作的一种方法是预加载图像,如var img=new Image; img.src='path';您可以将所有图像加载到数组中,然后可以根据需要将它们添加到页面中。图像预加载有很多,因为这似乎是你想要完成的。

+0

感谢您的回答,我已经听说过预加载方法,但它很奇怪,似乎没有语法来声明一个简单的二进制字符串为一个图像,因为浏览器本身强制执行该操作,所以为什么HTML/Javascript不允许程序员访问该功能,必须在浏览器引擎中找到该功能?在我看来,很难相信! – user1238012 2012-04-16 14:46:56

+0

@ user1238012:有许多API将内部方法包装在漂亮的处理程序中,而不是直接访问。浏览器漂亮的处理程序是'Image()'和''。 – 2012-04-16 18:28:41

+0

谢谢,我知道,但是当我尝试在网络的多个部分中找到的方法时,请执行以下操作: – user1238012 2012-04-16 22:15:34