【C#】画像処理 ~ 輝度変更 (明るさ) ~

■ サンプル

コントローラ

 * button x 1
 * trackBar x 1
 * pictureBox x 1

コード

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace SampleForm
{
  public partial class Form1 : Form
  {
    private Image srcImage;

    public Form2()
    {
      InitializeComponent();
      this.srcImage = this.pictureBox1.Image;
    }

    private void button1_Click(object sender, EventArgs e)
    {
      //明るさを100増やした画像を作成する
      Image newImg = AdjustBrightness(this.srcImage, this.trackBar1.Value);
      this.pictureBox1.Image = newImg;
    }

    /// <summary>
    /// 指定した画像を指定した明るさにして新しい画像を作成する
    /// </summary>
    /// <param name="img">画像</param>
    /// <param name="brightness">明るさ(-255~255)</param>
    /// <returns>明るさが変更された画像</returns>
    public static Image AdjustBrightness(Image img, int brightness)
    {
      //明るさを変更した画像の描画先となるImageオブジェクトを作成
      Bitmap newImg = new Bitmap(img.Width, img.Height);
      //newImgのGraphicsオブジェクトを取得
      Graphics graphics = Graphics.FromImage(newImg);

      //ColorMatrixオブジェクトの作成
      //指定された値をRBGの各成分にプラスする
      float plusVal = (float)brightness / 255f;
      System.Drawing.Imaging.ColorMatrix cm =
          new System.Drawing.Imaging.ColorMatrix(
              new float[][] {
        new float[] {1, 0, 0, 0, 0},
        new float[] {0, 1, 0, 0, 0},
        new float[] {0, 0, 1, 0, 0},
        new float[] {0, 0, 0, 1, 0},
        new float[] {plusVal, plusVal, plusVal, 0, 1}
      });

      //ImageAttributesオブジェクトの作成
      System.Drawing.Imaging.ImageAttributes ia =
          new System.Drawing.Imaging.ImageAttributes();
      //ColorMatrixを設定する
      ia.SetColorMatrix(cm);

      //ImageAttributesを使用して描画
      graphics.DrawImage(img,
          new Rectangle(0, 0, img.Width, img.Height),
          0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia);

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

      return newImg;
    }
  }
}


関連記事

画像処理

画像処理 ~ コントラスト ~
https://blogs.yahoo.co.jp/dk521123/37852480.html
画像処理 ~ シャープネス ~
https://blogs.yahoo.co.jp/dk521123/37837353.html
画像処理 ~ 回転 ~
https://blogs.yahoo.co.jp/dk521123/37853430.html
画像処理 ~ アフィン変換 ~
https://blogs.yahoo.co.jp/dk521123/38061211.html

その他

PictureBox ~画像を表示する~
https://blogs.yahoo.co.jp/dk521123/23504075.html
PictureBox [7] ~ 画像をコピーする ~
https://blogs.yahoo.co.jp/dk521123/37857445.html
C#】Graphics ~ 図形の描画 ~
https://blogs.yahoo.co.jp/dk521123/folder/966427.html