如何从媒体库windows phone 7裁剪图像

时间:2013-03-31 15:18:56

标签: windows-phone-7

我在medialibrary(5000 * 5000像素)中有大图像。我只需要拍摄部分照片。假设它从x = 200 y = 200开始,其1000像素宽度和高度。我怎样才能做到这一点 ?我没有任何好的解决方案。

我发现只有解决方案:

使用 photochoosertask .... 然后

var b = new WriteableBitmap(5000, 5000);
 b.LoadJpeg(e.ChosenPhoto);
 WriteableBitmap wb = b.Crop(200, 200, 1000, 1000);
 image1.Source = wb

但结果质量很差,我也有一些ram问题......

1 个答案:

答案 0 :(得分:0)

这里的问题是您正在创建大小为1000x1000的WriteableBitmap。当您调用LoadJpeg时,它会将您的图像加载到该分辨率,从而导致质量问题。当你裁剪时,情况变得更糟。

当您尝试使用大图片时,内存问题是正常的。为避免这种情况,您最好使用SetSource方法,该方法会自动将照片缩放到2000x2000像素以下。如果您想了解更多相关信息,可以find details on my blog

但是,使用Crop方法是可行的方法。采取的步骤包括:

  • 从流源创建BitmapImage,然后从它创建WriteableBitmap(或者,创建一个大小为5000,5000的WriteableBitmap,这是你想要的,但会导致内存问题)
  • 调用Crop方法,但缩放所有内容以匹配使用SetSource时获得的分辨率 - 应为2000x2000或更低。
  • 将image1.Source设置为新创建的WB。