Мое приложение использует камеру, чтобы сделать снимок и загрузить его на 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);
}
Я пытался писать в исходный поток. Дох!
Спасибо.