FieldAccessException при использовании FJCore с Silverlight для Windows Phone 7
Я нашел эту замечательную библиотеку для Silverlight, которая в основном является портом libjpeg, так что я был полностью взволнован, чтобы проверить это. После загрузки библиотеки из репозитория SVN (http://fjcore.googlecode.com/svn/trunk/) я смог успешно собрать библиотеку и добавить ссылку на.DLL в свой проект Windows Phone 7. После успешной сборки моего проекта WP7, при использовании эмулятора, приложение вылетает с ошибкой, которую я никогда раньше не видел:
FieldAccessException было необработанным. - System.Reflection.Emit.OpCodes.Ldarg_1
Пример Silverlight из оригинального кода работал нормально. Пример открывает диалоговое окно "Открыть файл" и изменяет размер изображения в зависимости от того, что выбрано. К сожалению, я не могу использовать тот же код в моем проекте WP7. Классы WP7 не поддерживают диалог "Открыть файл". Библиотека просто использует универсальный объект Stream, поэтому я передаю e.Result (объект PhotoStream) из события PhotoChooserTask Completed.
Есть мысли о том, почему я получаю эту ошибку и как ее исправить?
Изменение размера изображения в моем приложении WP7 является обязательным условием. В конце концов, кто хочет подождать, чтобы загрузить 5MP изображение по сети 3G? Я знаю, что нет.
Спасибо!
ОБНОВЛЕНИЕ - найдено решение для изменения размера изображения в WP7 в потоке приложения (не в потоке пользовательского интерфейса)
protected Stream ResizeImage(WriteableBitmap tempBitmap, int maxEdge)
{
WriteableBitmap wb = tempBitmap;
// Resize to Max Values...
Size widthHeight = GetMaxWidthHeight(wb.PixelWidth, wb.PixelHeight, maxEdge);
Stream resizedStream = new MemoryStream();
wb.SaveJpeg(resizedStream, (int)widthHeight.Width, (int)widthHeight.Height, 0, 90);
return resizedStream;
}
1 ответ
Потому что вы не можете использовать отражение (DLR) в приложении WP7.