删除图像周围的黑色边框

时间:2009-08-12 14:49:06

标签: c# .net asp.net graphics gdi+

我有几张JPG图片。其中一些可能在一侧或多侧有黑色边框,我想将它们删除。黑色边框可能不会围绕实际图像 - 有些可能只有底部的边框(实际图像位于顶部),而有些可能居中(这意味着两边是黑色边框,但没有连接)。更糟糕的是,这些图像是JPG Compressed,所以它们可能不再是0,0,0 black。

在Paint程序中,我会“简单地”使用具有低容差的Magic Wand工具,但我需要在ASP.net上的C#中进行,我不知道这样做的最佳方法是什么

我应该“扫描”每一行然后每列(两个嵌套的for循环)来查找黑色区域吗?听起来有点愚蠢,性能和CPU负载方面。或者GDI +已经有一些魔棒工具?

图像不是那么大(最大474x474像素)并且之后缓存,但我需要尽可能降低服务器负载。

任何提示最不愚蠢的做法是什么?

1 个答案:

答案 0 :(得分:4)

似乎每个边缘都可以做到这样的事情:

for each edge:
    for (i = 0; ; i++) {
         compute average pixel value along edge row/column + i
         if (average value > threshold)
              break;
    }
    crop image