たとえば、1024 x 768のサイズの画像の場合、グレーの画像に変換する次のコードは、私のマシン(4コアと1 GBのRAMを備えた仮想マシン(Hyper-Vの下))で0.1秒で完了し、360の画像x 480時間は0.03秒でした。 (このトピック用にすばやくスケッチしたコードを厳密に判断しないようにお願いします。フォームには2つのPictureBoxと1つのボタンがあります)。
DateTime startTime = DateTime .Now;
ImageAttributes ia = new ImageAttributes();
ColorMatrix cm = new ColorMatrix();
cm.Matrix00 = cm.Matrix01 = cm.Matrix02 =
cm.Matrix10 = cm.Matrix11 = cm.Matrix12 =
cm.Matrix20 = cm.Matrix21 = cm.Matrix22 = 0.34f;
ia.SetColorMatrix(cm);
Bitmap bmp = new Bitmap (pictureBox1.Image);
Graphics g = Graphics .FromImage(bmp);
g.DrawImage(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia);
pictureBox2.Image = (Image)bmp;
button1.Text = ( DateTime .Now - startTime).TotalSeconds + " c." ;
* This source code was highlighted with Source Code Highlighter .
「調光」は、次の値を使用して取得できます。
cm.Matrix00 = cm.Matrix11 = cm.Matrix22 = 0;
cm.Matrix33 = 0.25f;
* This source code was highlighted with Source Code Highlighter .
必要に応じて、クラスコンストラクターを使用してすべての値を同時に指定できます。
ColorMatrix cm = new ColorMatrix( new float [][]
{
new float [] { 0, 0, 0, 0, 0},
new float [] { 0, 0, 0, 0, 0},
new float [] { 0, 0, 0, 0, 0},
new float [] { 0, 0, 0, 0.25f, 0},
new float [] { 0, 0, 0, 0, 0},
});
* This source code was highlighted with Source Code Highlighter .
また、それらを使用して、ネガ画像を作成したり、ある色を別の色に置き換えたりすることができます。 操作。