问题标签 [webimage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用带有 WebImage 类的 C# 裁剪图像?
C#
我有一个使用ASP.NET MVC 5 框架顶部编写的应用程序。
我正在尝试使用WebImage裁剪磁盘上的图像。在 GUI 上,我使用Jcrop插件来允许用户标记他们想要裁剪的区域,也就是保留。如您所见,Jcrop 插件为我提供了 X1、X2、Y1 和 Y2,它们标识了要保留的最终图像的位置。Jcrop 还为我提供了最终图像的最终高度和宽度,尽管它们也可以使用以下公式计算W = X2 - X1
;H = Y2 - Y1
这是我裁剪给定图像并覆盖它的方法。
但是,裁剪后的图像不是我所期望的。这是一个非常小的图像,与用户想要保留的图像不同。
如何使用WebImage.Crop(...)
正确裁剪图像?
javascript - 在 JS 中使用像素操作(WebImage)填充未知的不对称多边形
最近,我一直在尝试创建代码来用颜色填充任何形状的多边形。我已经能够正确填充只有一个边框大小的线条的形状,尽管我发现自己无能为力。问题是代码不知道何时考虑将大于预期的像素线作为形状的垂直或水平边框。我从左到右遍历形状的每个像素,并通过检查 alpha 值是否为 0 来检查任何像素是否具有任何形式的颜色。一旦它找到一个 alpha 值不为 0 的像素,它向前移动一个像素,然后使用偶数/奇数技术来确定该点是否在多边形的一部分内(它在右侧制作一条无限线并确定与彩色线的碰撞次数是否为奇数,并且如果是,则该点位于多边形内)。一般来说,我们认为一个单独的像素算作一条线,我们认为多于一个像素的水平线是两条线,因为水平线是否经常成为边框的一部分。采取以下场景:
在这里,红点是我们开始测试的点(像素)。如果我们不认为中间的水平线是两个点(如红线和 x 所示),我们将只有两个交点,因此不会填充像素,尽管我们肯定会这样做想要填充那个像素。然而,如前所述,这带来了另一个不同场景的问题:
在这种情况下,如果我们确实将超过一个像素的水平线算作两条单独的线,我们最终不会填充任何边框比预期粗细的区域。供您参考,处理此问题的函数如下:
在哪里...
imgData是给定区域中所有像素的集合(本质上是一个 WebImage 对象)
IMG_SCALE是图像被放大的整数值(它也为我们提供了像素的比例)。在此示例中,它等于 4,因为图像放大到 192x256(从 48x64)。这意味着您在图像中看到的每个“像素”实际上都由一个 4x4 的相同颜色像素块组成。
所以,我在这里真正要寻找的是一种方法来确定一个给定的彩色像素是否是水平边框的一部分,或者它是否只是包含垂直边框厚度的另一块。此外,如果我通常对这个问题有错误的方法,我将非常感谢有关如何更有效地做到这一点的任何建议。谢谢你。