1

我是 Windows Phone 开发的新手,我一直在寻找一种方法来裁剪已经内置到项目中的图像(也许有一天甚至来自相机),但我发现的每个包都有对 Visual Studio 大惊小怪,或者抛出参数异常。所以我决定我会做我自己的功能来做到这一点。

但是,我一点也不知道从哪里开始。我很确定 WriteableBitmap 与它有关,并且与以下代码有关:

Application.GetResourceStream(new Uri("/PhoneApp3;component/Assets/Flowers/Daff.jpg"));

那么如何开始获取像素数据或创建新图像并应用像素数据。最后,如何保存结果并通过 UI 的图像元素引用它。

4

2 回答 2

3

使用WriteableBitmapEx在 Windows Phone 上裁剪图像。您的解决方案必须工作的方式是操作 WritableBitmap.Pixels 属性。您首先加载图像,更改像素属性并将原始像素转换为保存的图像格式,如 JPG 或 PNG。这是很多工作,对您来说很幸运,WriteableBitmapEx 为您完成了这些工作。

首先,从 NuGet 安装 WritebleBitmapEx

安装包 WriteableBitmapEx

然后,您可以加载任何图像,对其进行裁剪并保存回 MediaLibrary。例如,这里是如何从应用程序的 XAP 加载文件、裁剪到图像左上角 25% 并保存到“已保存图片”WP7/8 相册的示例。

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var bmp = new WriteableBitmap(0, 0).FromContent("Assets/ApplicationIcon.png");
    var croppedBmp = bmp.Crop(0, 0, bmp.PixelWidth/2, bmp.PixelHeight/2);
    croppedBmp.SaveToMediaLibrary("myImage.jpg");
}

当我们运行这段代码时,我们可以看到新的裁剪图像:

裁剪图像

于 2013-01-24T01:42:03.523 回答
1

我最近需要这样做并且不想使用外部库。微软在 MSDN 上提供了一个很好的例子来说明如何做到这一点(并且非常擅长不引起内存泄漏!)

http://code.msdn.microsoft.com/wpapps/Photos-Sample-a38a2c8e

干杯,威尔

于 2013-09-19T08:41:10.690 回答