命名って難しい

変数、関数、クラスなどなど実装より命名に毎回悩むタイプの人間による技術や趣味についてのメモ。

白黒画像から白でない部分を囲むようにクロップする。

やりたいこと

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);
        }
    }
}