我有几张JPG图片。其中一些可能在一侧或多侧有黑色边框,我想将它们删除。黑色边框可能不会围绕实际图像 - 有些可能只有底部的边框(实际图像位于顶部),而有些可能居中(这意味着两边是黑色边框,但没有连接)。更糟糕的是,这些图像是JPG Compressed,所以它们可能不再是0,0,0 black。
在Paint程序中,我会“简单地”使用具有低容差的Magic Wand工具,但我需要在ASP.net上的C#中进行,我不知道这样做的最佳方法是什么
我应该“扫描”每一行然后每列(两个嵌套的for循环)来查找黑色区域吗?听起来有点愚蠢,性能和CPU负载方面。或者GDI +已经有一些魔棒工具?
图像不是那么大(最大474x474像素)并且之后缓存,但我需要尽可能降低服务器负载。
任何提示最不愚蠢的做法是什么?
答案 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