根据Windows手机中的颜色裁剪图像边框

Ste*_*Pet 8 c# image windows-phone-7 windows-phone-8 writablebitmap

在此输入图像描述

以上是我正在使用的图像.我想要实现的是从图像中删除边框的红色部分.如何在Windows Phone中以编程方式实现此目的?我找到了WriteableBitmapExtensions.Crop()方法,但我对参数感到困惑(如何找到图像的x,y位置,以及大小和宽度?)

我面临的另一个问题是:我将获得具有不同大小边框的图像,因此我无法对x或y值进行硬编码.
任何人都可以建议解决方案,或指导我解决问题?

Igo*_*lic 3

这不是一件小事,您还没有与我们分享任何代码,所以我可以给您一些建议。每个 WriteableBitmap 都定义了宽度和高度。您应该能够通过以下方式访问它

wb.PixelWidth;
wb.PixelHeight;
Run Code Online (Sandbox Code Playgroud)

其中 wb 是你的 WriteableBitmap (图片)

话虽如此,使用 WriteableBitmapEx 库裁剪 WriteableBitmap 是微不足道的

var croppedBmp = wb.Crop(10, 10, 300, 220);
Run Code Online (Sandbox Code Playgroud)

如果你的 wb 是 320x240 并且边框宽度是 10,那么上面的 Crop 调用就可以解决问题 - 你将从点 (10,10) 开始到 (310, 230) 结束的内部矩形

现在讨论第二个问题 - 不知道边框的宽度。如果你知道的话会有帮助

  1. 图片每边的边框厚度相同
  2. 边框始终只有一种颜色

假设这是真的,您可以想到一个简单的算法(可能不是每次都正确,但您可以测试它并调整),例如,它需要一些随机点

(0,randNumber < wb.PixelHeight), (randNumber < wb.PixelWidth, 0), (wb.PixelWidth, randNumber < wb.PixelHeight), (randNumber < wb.PixelWidth, wb.PixelHeight)

然后向图片内部移动,只要相邻像素与起始像素颜色相同即可。你随机取的分数越多,你答对的机会就越大。这样做的明显问题是,图片上的某些内容可能与边框颜色相同(完全相同),这会使边框看起来比实际宽度更宽。这就是为什么你应该多拿点。

如果您展示了一些代码,我很乐意扩展答案。