ドリリウム

趣味をとことん突き詰めるブログ。ペット / フィンチ / カメラ / 高知 / 釣り / DIY / バイク / 車 / 家具制作 / アクアリウム / コーヒー / 地方移住 / ルノー・ルーテシア / SUZUKI ST250 E type / EOS Kiss M

こんにちは。カタミチ(@katamichi2h)です。

お問い合わせsyufukc@gmail.com / Twitter

【C# .NET】画像に透過した画像を重ね合わせる方法

f:id:katamichinijikan:20190414152645p:plain

ロゴやウォーターマークなどを透過して重ね合わせる方法を紹介します。

例えばある画像にロゴ画像を重ね合わせる時などに使います。

コードでは、baseImagePathには元の画像のパスを、logoImagePathには重ね合わせるロゴ画像のパスを設定するイメージです。

transparentLogoオブジェクトに、透過したロゴ画像が格納されます。

ロゴは50%に透過して重ね合わせます。

var baseImagePath = @"C:\Image\image.jpg";
var logoImagePath = @"C:\Image\logo.jpg";

var baseImage = new Bitmap(baseImagePath);
var logoImage = new Bitmap(logoImagePath);
var newImage = new Bitmap(baseImage);

var transparentLogo = new Bitmap(logoImage.Width, logoImage.Height);
var gl = Graphics.FromImage(transparentLogo);

var c = new System.Drawing.Imaging.ColorMatrix();
c.Matrix33 = 0.5F;
var i = new System.Drawing.Imaging.ImageAttributes();
i.SetColorMatrix(c);
gl.DrawImage(logoImage, new Rectangle(0, 0, logoImage.Width, logoImage.Height), 0, 0, logoImage.Width, logoImage.Height, GraphicsUnit.Pixel, i);

var g = Graphics.FromImage(newImage);
g.DrawImage(transparentLogo, 0 , 0, logoImage.Width, logoImage.Height);

g.Dispose();
gl.Dispose();
baseImage.Dispose();
logoImage.Dispose();
transparentLogo.Dispose();

newImage.Save(@"C:\Image\new.jpg",  System.Drawing.Imaging.ImageFormat.Jpeg);
newImage.Dispose();

手順はとても簡単です。

  1. パスをもとにBitmapオブジェクトを生成する(4~6行目)
  2. Graphics.DrawImageメソッドで透過率を調整する(20行目)
  3. Graphics.DrawImageメソッドで2枚の画像を重ね合わせる(23行目)
  4. 重ね合わせた画像を保存する(32行目)

そのままPictureBoxに表示したり、応用的な使い方も可能です。

画像の保存形式を変更したり、重ねる画像の位置を調整したり、重ねる画像の大きさを変更する方法はこちらの記事を参考にしてください。

【C# .NET】2枚の画像を重ね合わせる

透過率の調整

透過率はColorMatrixオブジェクトのMatrix33の値を調整します。

50%なら0.5、30%なら0.3といった感じです。

c.Matrix33 = 0.5F;

ColorMatrixは「c.Matrix33 = 」という風に設定せずコンストラクタで初期化することも可能ですが、この方がシンプルになります。

WaterMarker

この画像を重ね合わせる処理を利用して製作したのが、ウォーターマークなどを一括して重ね合わせることができる「WaterMarker」というソフトウェアです。

配布はVectorさんで行っています。

WaterMarkerの詳細情報 : Vector ソフトを探す!

 

▼IT系の転職なら

▼誰かにプログラミングを教えてみませんか?

▼釣り具の宅配買取なら