Обработка изображений на стороне клиента - PullRequest
32 голосов
/ 01 февраля 2010

Мы создаем веб-приложение, которое требует интенсивной обработки изображений. Мы бы хотели, чтобы эта нагрузка обработки была как можно больше на клиенте, и мы хотели бы поддерживать как можно больше платформ (даже мобильных).

Да, я знаю, желаемое за действительное

Вот информация:

  1. Обработка изображений - растеризация по некоторым данным. Подумайте, как создать изображение PNG из файла PDF.

  2. У нас мало серверной мощности. Таким образом, обработка на стороне клиента является обязательным условием.

Итак, мы рассматриваем:

  1. Flash - наиболее распространенный, но из того, что я прочитал, есть слабые инструменты разработки. (и пока нет поддержки iPhone / iPad).

  2. Silverlight - позволяет нам использовать .NET CLR, поэтому большой ++ (много кода находится в .NET). Но не поддерживается для большинства мобильных телефонов (по слухам, поддержка Android в будущем)

  3. HTML5 + Javascript - возможно, самый «переносимый» вариант. Проблема заключается в необходимости переписывать весь этот код обработки изображений в Javascript.

Какие-нибудь мысли или архитектуры, которые могут помочь? Пояснение: мне не нужны дальнейшие идеи о том, какие библиотеки доступны для Silverlight и Javascript. Моя дилемма

  • выбор Silverlight означает отсутствие поддержки большинства мобильных телефонов
  • выбор Flash означает, что мы должны переработать большую часть нашего кода И не поддерживать iPhone / iPad
  • HTML5 + Javascript, мы должны перестроить большую часть нашего кода и пока не полностью поддерживаться во всех браузерах
  • выбор двух (Silverlight + Flash) будет слишком дорогим

Какие-нибудь нестандартные или яркие идеи / альтернативы, которые я мог бы упустить?

Ответы [ 14 ]

0 голосов
/ 07 июля 2010

Почему бы не упомянуть Java-апплет?

Хорошие стороны:

почти все браузеры поддерживают? нужно установить JRE? поддержка всех ОС Java предоставляет наборы Java Advanced Image, но если можно вызвать c ++ dll, это лучше всего (JNI может вызывать c ++ dll)

0 голосов
/ 10 февраля 2010

Зависит от типа обработки изображений и конечного пользователя, на который вы ориентируетесь.

Поскольку вы ищете целевые мобильные телефоны, при обработке изображений необходимо учитывать тип трубки, которую имеет пользователь или получатель (при обмене сообщениями через SMS / MMS), поскольку разные трубки имеют разные разрешения экрана и обрабатывают разные изображения форматы для основных изображений и миниатюр.

Я бы посоветовал вам рассмотреть гибридную облачную архитектуру, как было упомянуто в основных положениях Microsoft PDC в этом году. Это позволит вам иметь собственные серверы для поддержки вашего приложения, но если вам потребуется дополнительная емкость из-за масштабирования в облаке с помощью AppFabric.

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

Я работал над решением, в котором размещалась его серверная часть инфраструктуры обработки и доставки изображений, а затем создал различные предложения пользовательского интерфейса, позволяющие осуществлять продажи через настольные ПК, MNO и AppStores. Это может сработать, а с точки зрения бизнеса может принести выгоду от масштаба.

0 голосов
/ 10 февраля 2010

Лучшее решение - использовать silverlight (поэтому у вас уже есть готовый код). Если клиент не может запустить его (мобильные телефоны и т. Д.), Обработайте его на стороне сервера.

Это лучший компромисс.

0 голосов
/ 04 февраля 2010

На мой взгляд, нет единого решения, которое бы отвечало всем вашим потребностям. Ваш лучший вариант, imo, - использовать Flash и надеяться, что Adobe заключит соглашение с Apple о приобретении Flash на iPhone / iPad. Главный недостаток, конечно, заключается в том, что вам придется переписывать большую часть кода.

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

...