1. ホーム
  2. c#

[解決済み] C#/.NETで2つの画像を合成する

2023-02-16 02:38:54

質問

シンプルなアイデア:私はマージしたい2つの画像を持っています。1つは500x500で、中央が透明で、もう1つは150x150です。

基本的なアイデアはこれです。500x500 の空のキャンバスを作成し、150x150 の画像を空のキャンバスの中央に配置し、次に 500x500 の画像をコピーして、中央が透明になって 150x150 が透けて見えるようにします。

私はJava、PHP、Pythonでそれを行う方法を知っています...。ただ、C# でどのオブジェクト/クラスを使用すればよいか見当がつきません。画像を別の画像にコピーする簡単な例で十分です。

どのように解決するには?

基本的に、私は私たちのアプリケーションのいずれかでこれを使用します。 動画のフレームにプレイ アイコンをオーバーレイしたいのです。

Image playbutton;
try
{
    playbutton = Image.FromFile(/*somekindofpath*/);
}
catch (Exception ex)
{
    return;
}

Image frame;
try
{
    frame = Image.FromFile(/*somekindofpath*/);
}
catch (Exception ex)
{
    return;
}

using (frame)
{
    using (var bitmap = new Bitmap(width, height))
    {
        using (var canvas = Graphics.FromImage(bitmap))
        {
            canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
            canvas.DrawImage(frame,
                             new Rectangle(0,
                                           0,
                                           width,
                                           height),
                             new Rectangle(0,
                                           0,
                                           frame.Width,
                                           frame.Height),
                             GraphicsUnit.Pixel);
            canvas.DrawImage(playbutton,
                             (bitmap.Width / 2) - (playbutton.Width / 2),
                             (bitmap.Height / 2) - (playbutton.Height / 2));
            canvas.Save();
        }
        try
        {
            bitmap.Save(/*somekindofpath*/,
                        System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        catch (Exception ex) { }
    }
}