白黒画像から白でない部分を囲むようにクロップする。
やりたいこと
A4サイズの画像にちっちゃく書かれたなにかを取り出したい。
抽象的すぎるけど、とりあえずクロップしたいんだ、ということ。
実装
Bitmapを使ってみました。
static void Main(string[] args) { using (var image = new Bitmap("original.png")) { int minh = image.Height, maxh = 0; int minw = image.Width, maxw = 0; for (int w = 0; w < image.Width; w++) { for (int h = 0; h < image.Height; h++) { var pix = image.GetPixel(w, h); var value = pix.ToArgb(); // 白でない if (value != -1) { minh = Math.Min(minh, h); minw = Math.Min(minw, w); maxh = Math.Max(maxh, h); maxw = Math.Max(maxw, w); } } } var rect = new Rectangle(minw, minh, maxw - minw, maxh - minh); using (var cropped = image.Clone(rect, image.PixelFormat)) { cropped.Save("cropped.png", ImageFormat.Png); } } }