Мое приложение использует камеру, чтобы сделать снимок и загрузить его на flickr.Я бы хотел сжать изображение, чтобы загрузка не заняла столько времени, сколько сейчас.Я попытался как BitmapSource, так и метод SaveJpeg в WriteableBitmap, чтобы выполнить это, но не получилось.В источнике растрового изображения нет тех же элементов, доступных в Silverlight / WP, как в полной версии платформы .NET, и метод SaveJpeg, который WriteableBitmap продолжает давать мне сообщение об ошибке «Этот поток не поддерживает запись в него».
Это то, что я сейчас делаю в обработчике завершенных событий CameraCaptureTask:
private void CameraCaptureCompleted(object sender, PhotoResult e)
{
if (e == null || e.TaskResult != TaskResult.OK)
{
return;
}
BitmapImage bitmap = new BitmapImage {CreateOptions = BitmapCreateOptions.None};
bitmap.SetSource(AppHelper.LoadImage(e.ChosenPhoto));
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmap);
// Encode the WriteableBitmap object to a JPEG stream.
writeableBitmap.SaveJpeg(e.ChosenPhoto, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0, 85);
}
Этот код дает мне сообщение: «Поток не поддерживает запись».
Есть ли какие-тоиначе я мог бы сжать изображение, или мне пришлось бы написать алгоритм сжатия?
ОБНОВЛЕНИЕ ОБНОВЛЕНО !!
private void CameraCaptureCompleted(object sender, PhotoResult e)
{
if (e == null || e.TaskResult != TaskResult.OK)
{
return;
}
BitmapImage bitmap = new BitmapImage {CreateOptions = BitmapCreateOptions.None};
bitmap.SetSource(AppHelper.LoadImage(e.ChosenPhoto));
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmap);
// Encode the WriteableBitmap object to a JPEG stream.
writeableBitmap.SaveJpeg(new MemoryStream(), writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0, 85);
}
Я пытался записать в исходный поток.Дох!
Спасибо.