我是Windows Phone开发的新手,我一直在寻找一种方法来裁剪已经内置到项目中的图像(甚至可能有一天从相机中删除),但是每个包我都是发现要么在Visual Studio中大惊小怪,要么抛出参数异常。所以我决定我将自己的功能这样做。
但是,我没有任何想法从哪里开始。我很确定WriteableBitmap与它有关,并且与以下代码有关:
Application.GetResourceStream(new Uri("/PhoneApp3;component/Assets/Flowers/Daff.jpg"));
那么如何开始获取像素数据或创建新图像并应用像素数据。最后,如何保存结果并通过UI的图像元素引用它。
答案 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");
}
当我们运行此代码时,我们可以看到新的裁剪图像:
答案 1 :(得分:1)
我最近需要这样做,并且不想使用外部lib。 Microsoft在MSDN上提供了一个关于如何做到这一点的一个很好的例子(并且非常擅长不导致内存泄漏!)
http://code.msdn.microsoft.com/wpapps/Photos-Sample-a38a2c8e
干杯, 将