【问题标题】:Crop white space around black image based on color根据颜色裁剪黑色图像周围的空白区域
【发布时间】:2021-07-16 08:05:30
【问题描述】:
【问题讨论】:
标签:
c#
imagemagick
imagemagick-convert
【解决方案1】:
要删除数独方块周围的空白,您可以遍历像素。由于图像是黑白的,因此我们可以检查任何 R、G 或 B 值何时下降到某个白色阈值以下并变为黑色。
在本例中,我只是使用任意 200 值进行检查。
我从左上角和右下角走进去。仅当您的图像始终是完美的正方形时,这才有效。但您可以轻松调整此代码以更准确地检查坐标以满足您的目的。
using (var image = new Bitmap(Image.FromFile("firstImage.jpg")))
{
int topX = 0, topY = 0;
int bottomX = image.Width - 1, bottomY = image.Height - 1;
var color = image.GetPixel(topX, topY);
while(color.R > 200)
color = image.GetPixel(++topX, ++topY);
color = image.GetPixel(bottomX, bottomY);
while(color.R > 200)
color = image.GetPixel(--bottomX, --bottomY);
Bitmap croppedImage = new Bitmap(image);
Rectangle cropRect = new Rectangle(topX, topY, bottomX - topX + 1, bottomY - topY + 1);
croppedImage = croppedImage.Clone(cropRect, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
croppedImage.Save("firstImageNoBorder.jpg");
}
原文:
裁剪: