裁剪本地存储的图像

时间:2013-01-24 01:16:45

标签: c# image windows-phone-8

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

但是,我没有任何想法从哪里开始。我很确定WriteableBitmap与它有关,并且与以下代码有关:

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

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

2 个答案:

答案 0 :(得分:3)

使用WriteableBitmapEx在Windows Phone上裁剪图像。解决方案必须工作的方式是操作WritableBitmap.Pixels属性。首先加载图像,更改像素属性并将原始像素转换为保存的图像格式,如JPG或PNG。这对你很有帮助,WriteableBitmapEx为你做了这件事。

首先,安装WritebleBitmapEx from NuGet

  

Install-Package 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");
}

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

Cropped image

答案 1 :(得分:1)

我最近需要这样做,并且不想使用外部lib。 Microsoft在MSDN上提供了一个关于如何做到这一点的一个很好的例子(并且非常擅长不导致内存泄漏!)

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

干杯, 将