Как получить изображение из тега <img src="">? - PullRequest
1 голос
/ 16 марта 2012

Когда я хочу визуализировать картинку, я отправляю запрос на сервер с соответствующей картинкой для визуализации.Странно, как это возвращается:

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

Где эта ссылка должна быть данными изображения.

Используя это, как я могу преобразовать это в изображение, которое я могу показать пользователю?Это для приложения Facebook, я не могу просто вставить HTML.Оно должно отображаться внутри моего AS-приложения как растровое изображение, Sprite или что-то еще.Попытка преобразовать его в Bitmap или BitmapData не удалась ...

Единственная другая информация, которую я могу дать, это то, что мой templateLoader - это Loader, а его .data должен содержать HTML.

Ответы [ 3 ]

5 голосов
/ 16 марта 2012

Примерно так:

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);
}
3 голосов
/ 16 марта 2012

Используйте e4x.Я не уверен, что вы получаете строку или формат результата для вашего вызова службы уже XML, но если это строка, вы бы сделали что-то вроде этого:

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

Затем посмотритев коде Zevan, опубликованном для того, чтобы использовать Loader, если вы используете только AS, или использовать его в качестве источника для элемента управления Image в Flex.

1 голос
/ 16 марта 2012

Похоже, что сервер предоставляет вам ссылку, которая динамически ищет изображение на основе данных GET, которые вы передаете на сервер (? Templateid = template1).Жаль, что вы не вставили реальную ссылку, чтобы эта теория могла быть доказана.Возьмите реальную ссылку и скопируйте часть http: //, введите ее в браузер, и если изображение появляется, то это действительно так.

Если это правда, то вы хотите извлечь ссылку изтегВы можете сделать это с помощью регулярного выражения, например, так:

/ \?) "(.?)" (. *) /

Если вы запускаете это регулярное выражение для полного тега, как выПриведенное выше, группа захвата 2 будет содержать только ссылку HTTP.Затем вы можете использовать объект Loader для извлечения изображения, чтобы вы фактически загружали и представляли данные двоичного изображения вместо встраивания HTML.

Если вы собираетесь использовать Regex в AS3, то вам абсолютно необходимоиметь инструмент RegExr от grantskinner.com: http://gskinner.com/RegExr/desktop/.

Кроме того, чтобы получить данные из группы захвата 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];
}

Код не проверен, но концепция существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...