Получение данных пикселей .png в Silverlight - PullRequest
2 голосов
/ 18 ноября 2008

У нас есть приложение Silverlight, которому нужно загрузить несколько файлов .png. Мы можем загрузить изображения в порядке, но Silverlight не поддерживает чтение данных пикселей из класса Image.

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

Ответы [ 5 ]

3 голосов
/ 18 ноября 2008

В Silverlight нет встроенных классов для манипулирования / генерации изображений на основе пикселей. Вам необходимо реализовать собственный PNG-кодер / декодер, который работает с байтовым массивом, содержащим информацию об изображении. Джо Стегман реализовал один такой кодер, который вы должны проверить. Он получил много полезной информации о «редактируемых изображениях» в Silverlight по адресу http://blogs.msdn.com/jstegman/. Он занимается такими вещами, как применение фильтров к изображениям, генерация мандлеброт и т.д.

В этом блоге обсуждается JPEG Silverilght Encoder (FJCore), который можно использовать для изменения размера и повторного сжатия фотографий. Размер клиента: http://fluxcapacity.net/2008/07/14/fjcore-to-the-rescue/

Другим инструментом является «Fluxify», который позволяет изменять размер и загружать фотографии с помощью Silverilght 2. Его можно найти по адресу http://fluxtools.net/

Так что да, обработка изображений на стороне клиента определенно может быть выполнена в Silverilght 2. Счастливого взлома!

2 голосов
/ 19 ноября 2008

PNG декодирование найти сложно.

Я написал статью для MSDN, которая включает в себя некоторый открытый исходный код, который я собрал вместе с Джо Стегманом, FluxCapacity и несколькими другими. Он включает в себя декодирование PNG (а также GIF, JPG и BMP) для тех в этом потоке, которые ищут это.

http://www.microsoft.com/youshapeit/msdn/ExpertKnowledge/2008-10/InnovateWithSilverlight2.aspx

Если вам не нужна моя реализация Silverlight, вы можете перейти к тому, что я изменил для декодирования PNG: http://sourceforge.net/projects/pr2/

Ура!

Обновление: похоже, что они больше не предлагают исходный код на сайте, поэтому я повторно разместил контент здесь: http://dimebrain.com/2009/01/innovate-with-silverlight-2-article-code-available.html

0 голосов
/ 21 января 2009

Dimebrain - у предоставленной вами ссылки msdn нет действительной ссылки на исходный код - есть ли шанс, что у вас есть ссылка на работающий источник?

0 голосов
/ 19 ноября 2008

Один из вариантов, который может (в зависимости от обстоятельств) быть более простым, состоит в том, чтобы отдельно сохранять данные о цвете и данные о прозрачности, а затем программно применять прозрачность к изображению после его загрузки. Таким образом, вы можете сохранить изображение в виде 8-битного GIF-файла, представляющего альфа-канал, плюс JPG или BMP или что-то еще для цветных данных.

0 голосов
/ 18 ноября 2008

Спасибо - я видел блог Джо Стегмана. Это очень удобно, но у него нет декодера PNG. Мы используем PNG, поскольку нам нужна прозрачность. Ссылка на fluxtools, похоже, тоже не работает.

Я все еще ищу (безуспешно) декодер PNG, который можно добавить в Silverlight.

...