Внешние изображения не сглаживаются в BitmapImage as3 - PullRequest
0 голосов
/ 04 марта 2012

Что я делаю

Здравствуйте! У меня проблемы с загрузкой внешних изображений в мое приложение flash (builder).Чтобы показать изображение, я использую BitmapImage с включенным сглаживанием, например:

<s:BitmapImage id="image" smooth="true" smoothingQuality="high" width="100%" height="100%" fillMode="clip" />

Я также показываю миниатюры, используя новый flex4.6 scaleMode ZOOM, например:

<s:Image id="thumbnail" scaleMode="zoom" smooth="true" smoothingQuality="default" />

Я предварительно загружаю внешнее изображение с помощью SWFLoader, потому что мне нужно сохранить ширину и высоту исходного изображения

Проблема

Когда я тестирую свое приложение локально, все работаетотлично!Но когда я запускаю его из своего веб-домена, я вижу проблемы с его отображением.Для изображений, работающих в одном домене, и изображений из Flickr = нет проблем.Но другие изображения, например, из imageshack, показывают следующие проблемы:

  • Более крупный BitmapImage не является плавным.
  • Миниатюра не масштабируется так, как предполагалось.Это показывает крошечное в верхнем левом углу изображения thumnail.Когда я наводю указатель мыши на него, показывается thumnail, но, как и при стандартном масштабе и режиме заполнения, CLIP

Причина?

Я недействительно уверен, что вызывает проблему, но единственное отличие, которое я вижу в источниках изображений, заключается в политике домена.Файл crossdomain.xml для Flickr разрешает все http://farm1.static.flickr.com/crossdomain.xml в отличие от imageshack.us http://www.imageshack.us/crossdomain.xml

Если это будет причиной, то я не понимаю, почему изображение все еще загружается, но дрянно.Кто-нибудь знает, что именно происходит?Любые решения?Thnx.

1 Ответ

2 голосов
/ 05 марта 2012

Существуют определенные ограничения на загрузку изображений между доменами без правильной политики.Flash загрузит данные, но не допустит никаких манипуляций, включая сглаживание.

Существует несколько способов обойти это.Вы можете использовать прокси на стороне сервера, загружая изображение через локальную страницу php или asp.Это не самое быстрое решение, но оно будет работать.

Вы также можете попробовать загрузить изображение с помощью LoadBytes, а затем передать байтовый массив в объект Loader.Это не так красиво, как использование компонента Flex, но оно должно вернуть вам некоторый контроль.

...