2009-08-12 98 views
5

我有几张JPG图像。其中一些可能在一侧或多侧上有黑色边框,我想将其删除。黑色边框可能不会围绕实际图像 - 有些可能只有底部的边框(实际图像在顶部),而有些可能居中(这意味着两侧黑色边框,但未连接)。更糟的是,这些图像是JPG压缩的,因此它们可能不再是完全0,0,0黑色。删除图像周围的黑色边框

在一个Paint程序中,我会“简单地”使用Magic Wand工具,但容忍度很低,但我需要在ASP.net中使用C#来完成,而且我不知道这样做的最佳方式是什么是。

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

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

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

回答

4

好像每个边缘,你可以做这样的事情:

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

这种做法似乎有点蛮力(二for循环),但它是出奇的快(每张照片小于1毫秒)。感谢与平均颜色值的想法。 – 2009-08-13 17:54:14

+1

图像处理的可悲事实是,至少在较低的层次上,您必须迭代所有感兴趣的像素。此外,如果用户可以上传大多数黑色图像,请对这种方法进行一点小心。也许在允许的边框尺寸上设置一个上限。 – Eric 2009-08-14 05:23:12

相关问题