내 앱에서 카메라를 사용하여 이미지를 가져 와서 flickr에 업로드합니다. 업로드하는 데 시간이 오래 걸리지 않도록 이미지를 압축하고 싶습니다. BitmapSource 및 WriteableBitmap의 'SaveJpeg'메서드를 사용하여이 작업을 수행했지만 실패했습니다. 비트 맵 소스에는 Silverlight/WP에서 사용할 수있는 동일한 멤버가 전체 .NET Framework 버전과 동일하지 않으며 WriteJeteg 메서드가 WriteableBitmap을 통해 '이 스트림에서 쓰기를 지원하지 않습니다.'오류가 발생합니다.Windows Phone에서 이미지를 압축하는 방법
이 내가 현재 내 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);
}
원본 스트림에 쓰려고했습니다. 도!
감사합니다.
PhotoResult e는 스트림이 아니므로 SaveJpeg가이를 목표로 작동하지 않습니다. 어디에서 사진을 저장 하시겠습니까? IsolatedStorage 또는 임시 스트림 또는 다른 곳에서 ... – ameer
새로운 MemoryStream()에 저장하면 지금 저장 한 위치에 대한 참조가 없으므로 메모리 스트림을 생성하기 전에 메모리 스트림을 전달하는 것이 가장 좋습니다 일단 압축하면 메모리 스트림에서 직접 업로드하거나 격리 된 저장소에 저장하고 나중에 업로드 할 수 있습니다. – ameer