删除图像周围的黑色边框

Mic*_*tum 5 .net c# asp.net graphics gdi+

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

在一个Paint程序中,我会"简单地"使用具有低容忍度的Magic Wand工具,但我需要在ASP.net上的C#中进行,我不知道最好的方法是什么.

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

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

有什么暗示最不愚蠢的做法是什么?

Eri*_*ric 4

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

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