画像に透過図形を重ねてアイキャッチ画像っぽい何かを生成できるプログラムを作成してみる[c#]

2022-01-03

あまりにも画像処理的なプログラミングに触れていなかったので練習も兼ねて。

今回の目標は画像に文字入れしたり透過した図形入れたりできるようになることです。

before
after

どんなコードなのか ざっくり説明

MakeEyecatchクラスに「読み込みたいファイルのパス」と「画像の中心に表示したい文章」を引数で渡すことでアイキャッチ風の画像を作成する

実際のコード

実行前にSystem.Drawingを参照するように設定する必要があります。

黒っぽい画像で実行してしまったので分かりやすいようにとりあえず青色で出力されるようにしています。
実際に使用する場合は白色で出力されるようコード内の値を変更する必要性があります。
あとはフォントも変更するとさらにそれっぽくなるかも。

using System.Drawing;


namespace ConsoleApp14
{
    class Program
    {
        static void Main(string[] args)
        {
            MakeEyecatch(@"C:\jikken\candles.jpg", "お試し");
        }

        static void MakeEyecatch(string Path, string Sentence)
        {
            // 指定された画像を開く
            Bitmap img = new Bitmap(Path);
            Graphics g = Graphics.FromImage(img);

            // 半透明の長方形を画像の中心に出力
            g.FillRectangle(new SolidBrush(Color.FromArgb(128, 0, 0, 255)),
                new Rectangle(0, img.Height / 5, img.Width, img.Height*3/5 ));

            StringFormat strFmt = new StringFormat
            {
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };

            //引数の文字列を表示
            g.DrawString(Sentence, new Font("MS UI Gothic", 30), 
                Brushes.White, img.Width / 2, img.Height / 2, strFmt);

            //リソースを解放する
            g.Dispose();

            //画像として保存する
            img.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }

    }
}