如何从<img src=""/>标记获取图像?

时间:2012-03-15 20:19:46

标签: html actionscript-3 image

当我想渲染图片时,我向服务器发送一个请求,并提供相关图片进行渲染。奇怪的是它是如何返回的:

<img src="https://blargh.com/displayTemplate?templateid=template1">

该链接应该是图像数据。

使用此功能,如何将其转换为可以向用户显示的图像?这是一个Facebook应用程序,我不能只嵌入HTML。它需要在我的AS应用程序中显示为Bitmap或Sprite或其他任何东西。尝试将其转换为Bitmap或BitmapData失败了......

我能提供的唯一其他信息是,我的templateLoaderLoader,其.data应该包含HTML。

3 个答案:

答案 0 :(得分:5)

这样的事情:

var data:String = '<img src="https://blargh.com/displayTemplate?templateid=template1">';
// grab the src attribute
var url:Array = data.match(/<img src=\"(.*?)\">/);

if (url.length > 1){
  var loader:Loader = new Loader();
  loader.load(new URLRequest(url[1]));
  addChild(loader);
}

答案 1 :(得分:3)

使用e4x。我不确定你是否收到字符串或服务调用的结果格式已经是XML,但如果它是一个字符串,你会做这样的事情:

var imgXML:XML = XML(yourString);//yourString contains <img src="https://blargh.com/displayTemplate?templateid=template1"> 
link = imgXML.@src;

然后,如果你只使用AS,请查看Zevan发布的有关如何使用Loader的代码,或者将其用作Flex中Image控件的源代码。

答案 2 :(得分:1)

看起来服务器正在为您提供一个链接,该链接根据您传递给服务器的GET数据动态查找图像(?templateid = template1)。太糟糕了,你没有粘贴在真正的链接中,这样就可以证明这个理论。获取真实链接并复制出http://部分,将其输入浏览器,如果图像出现,则确实如此。

如果这是真的,那么您想从标记中提取链接。您可以使用正则表达式执行此操作,如下所示:

/ \?) “(?)”(。*)/

如果您像上面提到的那样针对完整标记运行该正则表达式,那么捕获组2将仅包含HTTP链接。然后,您可以使用Loader对象来获取图像,这样您实际上就可以下载并呈现二进制图像数据,而不是嵌入HTML。

如果您打算在AS3中使用Regex,那么您必须拥有grantskinner.com的http://gskinner.com/RegExr/desktop/的RegExr工具。

另外,为了从捕获组2获取数据,我们这样做:

var imageTag:String = '<img src="https://blargh.com/displayTemplate?templateid=template1">'
var myHttpRegex:Regex = /\<img(.*?)"(.*?)"(.*)/;
var result:Object;

result = myHttpRegex.exec(imageTag);
if(result != null) {
   var imgUrl:String = result[1];
}

代码未经测试,但概念就在那里。