正如在評論中提到的有幾種方法可以解決它,正如你所提到的,你可能會需要一個縮略圖。這裏有一些方法,我能想到的,現在它可能會解決你的記憶問題:
方法1:使用MediaLibrary
找到相同的圖像
首先,你會得到一個流的縮略圖版本,像這樣:
void task_Completed(object sender, Microsoft.Phone.Tasks.PhotoResult e)
{
if (e.TaskResult == Microsoft.Phone.Tasks.TaskResult.OK)
{
MediaLibrary library = new MediaLibrary();
Picture pic = library.Pictures.Where(p => e.OriginalFileName.EndsWith("\\" + p.Album.Name + "\\" + p.Name)).FirstOrDefault();
Stream thumbnailStream = pic.GetThumbnail(); // Stream to a thumbnail
}
}
對於這個工作,你還需要在WMAppManifest.xml
到支持的能力ID_CAP_MEDIALIB_PHOTO
或你不會得到任何結果。
方法2:
第二個選擇是使用例如WriteableBitmapEx library創建縮略圖自己的東西沿着線:
void task_Completed(object sender, Microsoft.Phone.Tasks.PhotoResult e)
{
if (e.TaskResult == Microsoft.Phone.Tasks.TaskResult.OK)
{
BitmapImage source = new BitmapImage();
source.SetSource(e.ChosenPhoto);
WriteableBitmap bitmap = new WriteableBitmap(source);
WriteableBitmap thumbnail = bitmap.Resize(100, 100, WriteableBitmapExtensions.Interpolation.Bilinear); // Creates a 100x100 thumbnail
}
}
其他方法:
另一種解決方案可能是使用Nokia Imaging SDK,根據文檔支持部分JPEG decodi NG(我還沒有使用此SDK自己,所以不能給你任何示例代碼,現在雖然):
使用RAJPEG技術,獲得的圖像數據,而不用極快預覽解碼整體 JPEG圖像,應用程序的效果, 旋轉和高分辨率圖像的裁剪。
您的問題非常廣泛。可能有幾種方法可以消耗更少的內存。而是發佈代碼獲取異常的代碼,或複製錯誤 – BossRoss
的示例應用程序您真的在使用Windows Phone 7嗎?如果是這樣,你爲什麼要標記它8?請不要濫用Windows手機標記 –
@ AMR更新。 (不能有人爲這兩個應用程序?!) – user3293835