Портативная библиотека классов не поддерживает элементы изображения или пользовательского интерфейса по дизайну, поэтому вашей проблемы, вероятно, будет довольно сложно решить, не извлекая некоторые функции в минимальную платформозависимую библиотеку. Из некоторых поисков в Интернете кажется, что другие разработчики, представленные с вашей же проблемой, прибегают к разгрузке работы с изображениями либо в веб-службе, либо в зависимости от платформы.
Конечно, вы всегда можете иметь дело с byte[]
и катите свой собственный кодировщик/декодер PNG. Ура. Имейте в виду, существуют различные ароматы, доступные на основе различных «фильтров» и т.д.
ЗКС ссылка here утверждает, что узлы, доступные в рамках проекта портативного класса библиотеки являются:
mscorlib.dll
System.dll
System.Core.dll
System.Xml.dll
System.ComponentModel.Composition.dll
System.Net.dll
System.Runtime.Serialization.dll
System.ServiceModel.dll
System.Xml.Serialization.dll
System.Windows.dll (from Silverlight)
Это последняя сборка является единственным один, о котором я знаю, имеет любую функциональность, связанную с изображениями. Он содержит класс System.Windows.Controls.Image
, который поддерживает отображение изображения в форматах файлов JPEG или PNG. Разумеется, оговорка (на основе матрицы, содержащейся в вышеупомянутой ссылке) состоит в том, что эта сборка Silverlight в формате System.Windows.dll
доступна только в PCL при ориентации на платформу Silverlight и/или на платформу Windows Phone 7. Он не будет доступен для более общей платформы .NET Framework 4 или платформы Xbox 360.
Если вы в конечном итоге вынуждены идти с минимальной платформозависимой библиотекой, инфраструктура WPF имеет пространство имен System.Windows.Media.Imaging
с расширенной поддержкой кодирования/декодирования формата изображения (включая формат PNG).
Когда Googling я нашел чистую библиотеку PNG C#, * pngcs *, [здесь] (https://code.google.com/p/pngcs/). Это не PCL прямо сейчас, но он, похоже, не имеет никакой зависимости от Windows Forms или WPF, поэтому совсем не сложно превратить его в PCL. Стоит попробовать? ** UPDATE ** Недавно проект был перенесен на [Github] (https://github.com/leonbloy/pngcs). –
Мне просто нужно было проверить, и ** да **, проект легко переносится в профиль PCL 111, для обхода нескольких неподдерживаемых вызовов метода требуется небольшая работа. –
@AndersGustafsson Эта библиотека может быть действительно вариантом - спасибо! :) – Adam