0

我有许多只包含 PNG 格式的框架(样式边框)的图像。图像的所有中心都是透明的。我正在寻找一种方法来检测没有透明度的框架高度和宽度。我尝试在 GDI+ C# 中逐个像素地进行检查,但未能使其正常工作。

所有这些都假设顶部框架高度和底部框架高度具有相同的高度,并且右框架宽度和左框架宽度具有相同的宽度。

帧是线性的,不应该有任何特殊的故障,所以如果我检测到右帧的宽度,我应该与左帧相同。

希望任何人都知道如何实现这一目标。

框架示例:

框架示例 http://www.digitalimageautorotate.com/images/frame_demo.png

4

1 回答 1

0

通常在处理图像时,您会使用 .LockBits 和指针来提高速度,因为您通常会一遍又一遍地访问数百万像素。(如果你不那样做 - 你可能会忽略它,因为你没有意识到你会得到多少开销)。

但是,在这种情况下,您将访问很少的像素,因此 .GetPixel 实际上应该是完美的。

public Size GetBorderSize(Bitmap bmp)
{
    var hx = bmp.Width/2;
    var hy = bmp.Height/2;
    var sz = new Size();
    while ( bmp.GetPixel(sz.Width, hy).A == 255 && sz.Width < hx)
        sz.Width++;
    while (bmp.GetPixel(hx, sz.Height).A == 255 && sz.Height < hy)
        sz.Height++;
    return sz;
}
于 2012-10-01T06:30:57.753 回答