Как сжать изображение на Windows Phone

Мое приложение использует камеру, чтобы сделать снимок и загрузить его на flickr. Я хотел бы сжать изображение, чтобы загрузка не занимала столько времени, сколько сейчас. Я пробовал как BitmapSource, так и метод SaveJpeg WriteableBitmap, но не смог. У источника растрового изображения нет тех же членов, доступных в Silverlight / WP, как в полном объеме.NET framework и метод 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);
    }

Я пытался писать в исходный поток. Дох!

Спасибо.

5
задан golamrabbi 15 January 2013 в 09:31
поделиться