?

Log in

Март 2010   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Я-та! Первый этап Silverlight мучений позади

Posted on 2010.02.09 at 12:36
Tags: , , , ,
Дофиксил свое силверлайт приложение и написал костыль для получения доступа к WriteableBitmap после того, как он отрендерится на странице. Ну и опубликовал его в каталоге приложений, теперь буду ждать рассмотрения модератора.
В-общем, приложение прекрасно работало на localhost, но как только стал брать изображения извне, то узнал про одно ограничение в Silverlight. По каким-то соображениям безопасности приложение может комфортно работать только внутри своего домена, то бишь скачивать фотографии внутри домена, где хостится приложение, оно может, но вот извне - уже нет.
Нужно было отрендерить контрол в WriteableBitmap и отредактировать его, поэтому кровь из носа нужна была такая функциональность.

Варианты были такие:
1. Заливать изображения в IsolateStorage и затем брать оттуда (естественно опять таки нужен был доступ к WriteableBitmap, которого не было)
2. Скачивать изображение с помощью WebHttpResponse (получаем Security Exception - нельзя скачивать изображения вне своего домена, но можно кстати запрашивать всякие странички, то бишь txt/html/xml - без проблем)
3. Создать веб-сервис, который бы хостился в том же домене и отдавал картинку. И о чудо, оно работает как и планировалось

Итак, был создан wcf rest сервис, который в качестве параметра принимает ссылку на изображение. Если кому интересно, опубликую функцию... Встала проблема с модификатором доступа фотографий. По умолчанию на изображение не накладываются никакие ограничения, то есть любой человек, обладая ссылкой, может пройти по ней и увидеть изображение. Но социальные сети уже давно обзавелись модификатором доступа, поэтому не ко всем фотографиям можно будет получить доступ через данный сервис, так как сервис не знает нужную куку, через которую и реализовано разграничение по правам. Пришлось багу превращать в фичу - в описании написал, что приложение работает только с фотографиями с выставленным модификатором доступа "Для всех".

В SL4 аноносирована функция сохранения в User папку (например, Мои Рисунки). Надеюсь, это позволит избавиться от ограничения WriteableBitmap, потому как оно в первую очередь направлено на невозможность сохранения изображения из "левых" источников.

Comments:


Oleksandr Nikitin
wizzard0 at 2010-02-09 15:08 (UTC) (Ссылка)
Дай угадаю, это скриншотилка\фотографировалка в игре?
dmodeus
dmodeus at 2010-02-09 16:36 (UTC) (Ссылка)
Кабы была игра :)
Все просто - небольшой редактор пользовательских фотографий (фотографии берутся из соц.сети) - менять контраст, яркость, резкость, накладывать маску по цвету, размыливать, убирать красные глаза и т.д.
Готовых шейдеров, на основе которых можно сделать эффекты, много, но ограничился пока небольшим набором. Теоретически должно еще поддерживаться ускорение GPU, но на моем компе все работает и так быстро...
Oleksandr Nikitin
wizzard0 at 2010-02-09 16:40 (UTC) (Ссылка)
гпу оно по дефолту пока откл т.к. у них были какие-то проблемы с совместимостью
dmodeus
dmodeus at 2010-02-09 16:52 (UTC) (Ссылка)
Да, по умолчанию оно отключено, но я его включил :)
Previous Entry  Next Entry